2015-03-03 4 views
1

У меня есть эта таблица с этим содержимым:как использовать отчетливое ПРИСОЕДИНИТЕСЬ, когда я иметь нулевое значение

enter link description here

И у меня есть этот запрос:

select sc.*,df.Name,foods.FoodName 
from R_Schedule as sc 
    left join R_DaysOfWeek as df on sc.DayId=df.DayId 
    join R_Foods as foods on sc.FoodId=foods.FoodId 
where sc.dayId=6 or sc.dayId is null 

Я получаю этот результат:

enter link description here

Вместо:

enter link description here

Я хочу, чтобы получить все записи, но не повторять по пищевой ид. мой запрос возвращает две строки с одинаковым идентификатором пищи. I tring use Distinct, но я не могу получить никакого ответа.

как я могу это сделать?

3:

Updated content of data :see

+0

sc.dayId не является нулевым – WorkSmarter

+0

несколько раз мне нужно получить несколько строк, когда dayid равно null. –

+0

Вы можете использовать http://sqlfiddle.com/ для проверки своих данных. –

ответ

0

Вы можете использовать Row_Number(), чтобы получить то, что вы хотите.

SELECT data.* 
FROM 
    (
     SELECT 
      sc.*,df.Name,foods.FoodName ,ROW_NUMBER() OVER(PARTITION BY foods.foodID ORDER BY sc.ScheduleID) as rn 
     FROM R_Schedule as sc 
     left join R_DaysOfWeek as df on sc.DayId=df.DayId 
     join R_Foods as foods on sc.FoodId=foods.FoodId 
     where sc.dayId=6 
    ) AS data 
WHERE 
    data.rn = 1 
+0

Я запускаю ваш код, но получаю эту ОШИБКУ: 'Столбец 'DayId' был указан несколько раз для 'data'.' –

+0

Большое спасибо. :) –

+0

Почему вы не заботитесь о sc.DayId = null? – gabba

Смежные вопросы