Как получить результаты, когда все «многие» результаты соответствуют условию? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть отношение «один ко многим».Как написать запрос, который возвращает только идентификаторы элементов, для которых каждая записка содержит ключевое слово.Вместо этого я получаю идентификаторы, даже если одна из заметок соответствует условию.С этим запросом я получаю плохие результаты.

select

count (distinct I.IDs)

from

Items I
left join Item_Stats IS on I.ItemID = IS.FKItemID

where

I.Deleted = 0 and
IS.Deleted = 0 and
IS.Description like '%Bamboo%'

РЕДАКТИРОВАТЬ: я немного отредактировал запрос, чтобы упростить.

example

С запросом получаю в результате 1,3,6,9.Мне нужно получить 3 и 9.

1 Ответ

0 голосов
/ 06 июня 2018

Вам не нужно объединение.Вы можете просто получить данные только из таблицы Item_stats, как показано ниже.

SELECT FKItemID
FROM Item_Stats
WHERE DELETED=0
GROUP BY FKItemID
HAVING COUNT(*)=SUM(IF(UPPER(Description) LIKE '%BAMBOO%',1,0));
...