Соединение Sql показывает нулевое значение

У меня есть 2 таблицы sql mtblSite_Lavel_Budget и mtblExpenditure_Site_Lavel. Я хочу присоединиться к ним, поэтому я написал запрос ниже, но один столбец всегда дает нулевой результат, хотя в этом поле есть значения.

введите здесь описание изображения

введите здесь описание изображения

Запрос, как показано ниже

select mtblExpenditure_Site_Lavel.SFTI_Id, 
mtblExpenditure_Site_Lavel.Site_Lavel_Interventions, 
mtblExpenditure_Site_Lavel.Sub_Site_Lavel_Interventions,
mtblExpenditure_Site_Lavel.Bill_No, mtblExpenditure_Site_Lavel.Date_Of_Bill,
mtblExpenditure_Site_Lavel.Eligible_Exp,
mtblExpenditure_Site_Lavel.Non_Eligible_Exp,
mtblExpenditure_Site_Lavel.Total,
mtblExpenditure_Site_Lavel.Physical_Progress,
mtblSite_Lavel_Budget.Sanction_Amount_DPR  
from mtblExpenditure_Site_Lavel 
left join mtblSite_Lavel_Budget 
   on mtblExpenditure_Site_Lavel.Sub_Site_Lavel_Interventions= mtblSite_Lavel_Budget.Sub_Site_Lavel_Interventions 
WHERE mtblExpenditure_Site_Lavel.SFTI_Id =13 
ORDER BY Date_Of_Bill desc

и результат ниже

введите здесь описание изображения

Прошу сообщить по вопросу.


person Gaurav    schedule 06.12.2013    source источник
comment
Причина, по которой он дает нули, заключается в том, что соединение не вернуло никаких результатов, т.е. вы не получили строки в объединенной таблице; в основном, ваше предложение о соединении неверно. Боюсь, ваш код не дает достаточно информации для дальнейшей помощи.   -  person Luaan    schedule 06.12.2013
comment
не могли бы вы уточнить? почему это соединение неправильно?   -  person Gaurav    schedule 06.12.2013
comment
это значения nvarchar   -  person Gaurav    schedule 06.12.2013
comment
@Гаурав. Значения в mtblExpenditure_Site_Lavel.Sub_Site_Lavel_Interventions и mtblSite_Lavel_Budget.Sub_Site_Lavel_Interventions не равны, поэтому ваше соединение ничего не возвращает из второй таблицы.   -  person Filipe Silva    schedule 06.12.2013
comment
вы оставили соединение, исправит все записи из mtblExpenditure_Site_Lavel независимо от совпадения в mtblSite_Lavel_Budget . как таковые совпадения не возвращают нули   -  person lemunk    schedule 06.12.2013
comment
проверьте, что поля, которые вы соответствуете, действительно совпадают, и опубликуйте результаты   -  person lemunk    schedule 06.12.2013
comment
совместное условие на mtblExpenditure_Site_Lavel.Sub_Site_Lavel_Interventions= mtblSite_Lavel_Budget.Sub_Site_Lavel_Interventions верно?   -  person ray    schedule 06.12.2013
comment
В принципе, учитывая ваши данные, в mtblSite_Lavel_Budget нет строк, которые имеют, например, Sub_Site_Lavel_Interventions из Distribution panelling.   -  person Luaan    schedule 06.12.2013
comment
тогда что мне делать. Если мне нравится mtblExpenditure_Site_Lavel, присоединяйтесь к mtblSite_Lavel_Budget на mtblExpenditure_Site_Lavel.sfti_id = mtblSite_Lavel_Budget.sfti_id . он показывает записи, но показывает двойные записи, я имею в виду, что вместо двух записей он показывает 4 (2 повторяющиеся записи)   -  person Gaurav    schedule 06.12.2013
comment
Вероятно, это потому, что stfi_id означает нечто иное, чем вы думаете. Как мне кажется, NULL является правильным значением для возврата в этом столбце, поскольку в таблице бюджета нет соответствующих данных. Если вас беспокоит только то, что вместо 0 стоит NULL, вы можете использовать coalesce(mtblSite_Lavel_Budget.Sanction_Amount_DPR, 0) as [Sanction_Amount_DPR] вместо mtblSite_Lavel_Budget.Sanction_Amount_DPR.   -  person Luaan    schedule 06.12.2013
comment
но все равно те же результаты   -  person Gaurav    schedule 06.12.2013
comment
Объясните словами то, что вы пытаетесь сделать. Вы очень неясно говорите о своей цели и о том, почему результаты, которые вы получаете, не соответствуют вашим ожиданиям. Что бы вы хотели видеть в этой колонке?   -  person Luaan    schedule 06.12.2013


Ответы (1)


Попробуй это

   from mtblExpenditure_Site_Lavel left join  mtblSite_Lavel_Budget on 
       mtblExpenditure_Site_Lavel.sfti_id = mtblSite_Lavel_Budget.sfti_id 

Я думаю, это сбивает с толку, потому что вы присоединяетесь к строковому столбцу, всегда лучше присоединяться к идентификатору, где это возможно.

person DaImTo    schedule 06.12.2013
comment
он показывает записи, но показывает двойные записи, я имею в виду, что вместо двух записей он показывает 4 (2 повторяющиеся записи) - person Gaurav; 06.12.2013
comment
это проблема с нашими ключами, если у вас есть неполное соединение, оно может дублировать значение. У вас есть другой ключ, который вы могли бы связать (sno_id?), иначе, если вы вынуждены связать строку, это не идеально, но это возможно. В вашей схеме, если у вас есть столбец с буквенными номерами, попробуйте сохранить их как char (x), а не varchar, и никогда не макс! при сравнении позаботьтесь о том, чтобы сделать верхний, если он чувствителен к регистру, и вы боитесь этой ошибки, Ltrim и rtrim, чтобы быть уверенными, что вас не раздражает пробел... и, наконец, возьмите пример, который должен работать, и проверьте свой ключ вручную, если это ошибка из вы или ваши данные - person Mathese F; 06.12.2013