У меня есть следующий запрос: результатSQL, отфильтровывать же идентификаторы, если нуль существует
SELECT
m.MilgaId,
opt.PropertyId,
sd.PropOptionId
FROM
Milga AS m INNER JOIN
PropertyOptionInMilga AS poInMil ON m.MilgaId = poInMil.MilgaId INNER JOIN
PropertyOption AS opt on poInMil.PropertyOptionId = opt.PropertyOptionId LEFT JOIN
StudentData AS sd on sd.UserId = 'A270D9AC-0D73-4E01-8CBC-D3C5812CCA97'
AND opt.PropertyId = sd.PropertyId
GROUP BY
m.MilgaId,
opt.PropertyId,
sd.PropOptionId,
m.IsEnable
HAVING
(m.IsEnable = 1)
ORDER BY
m.MilgaId
запросов:
MilgaId PropertyId PropOptionId
937 90 2291
937 132 2434
938 25 38
938 91 NULL <-----
938 132 2434
Я хотел бы, чтобы отфильтровать все MilgaId
с тем же идентификатором, если один из них null
- все строки для milgaId=938
должны быть отфильтрованы.
Мой результат запроса должен выглядеть следующим образом:
MilgaId PropertyId PropOptionId
937 90 2291
937 132 2434
* *** Исправление:
Результат запроса:
MilgaId PropertyId PropOptionId
937 90 2291
937 132 null <----- 132 with null
937 132 2434 <----- 132 has one without null so it's in result
938 25 38
938 91 NULL <-----
938 132 2434
939 201 2600
939 202 null
** Каждый milgaId
должны иметь все PropertyId
с по меньшей мере одним PropOptionId
not null
Мой результат запроса должен выглядеть следующим образом:
MilgaId PropertyId PropOptionId
937 90 2291
937 132 2434
Вы уверены, что вы хотите, LEFT JOIN? – jarlh
Я думаю, что большинство кодеров поставили условия поиска в предложение 'WHERE' для ясности, например. 'sd.UserId = 'A270D9AC-0D73-4E01-8CBC-D3C5812CCA97'' и' m.IsEnable = 1'. – onedaywhen
'Каждый milgaId должен иметь все PropertyId с хотя бы одним PropOptionId не null' ... тогда почему' '38' отфильтровывается? Вам нужно очистить свою логику здесь. –