Ищете предложение с запросом MYSQL - PullRequest
0 голосов
/ 27 января 2019

У меня есть галерея, которая содержит изображения с идентификаторами. Некоторые из изображений имеют несколько категорий, таких как 102,120. Но некоторые изображения имеют только одну категорию, например 102. Мне нужно было исключить перечисление этих изображений только с категорией 102. Так что запрос mysql для этого выглядит следующим образом, и он работает нормально.

SELECT g.id, g.category FROM `galleries` g WHERE g.display=1 AND g.category NOT LIKE "102"';

Мне нужно исключить еще одну категорию 84, но некоторые изображения имеют два идентификатора категории 84,154.

Итак, я попробовал следующий запрос,

SELECT g.id, g.category FROM `galleries` g WHERE g.display=1 AND g.category NOT LIKE "102" AND g.category NOT LIKE "%84%"';

Мне нужно, чтобы список изображений содержал категорию 154, которая также разделяет категорию 84. Но в приведенном выше запросе не перечислены многие изображения, которые содержат категорию 154, в том числе и потому, что они разделяют категорию 84.

Мне нужно предложить список всех изображений, кроме 102 и 84, при отображении 154 и других.

1 Ответ

0 голосов
/ 27 января 2019

Я бы ожидал, что SQL будет выглядеть следующим образом:

select g.image_id
from galleries g
where g.display = 1
group by g.image_id
having sum(category = 102) = 0 and
       sum(category = 84) = 0;

То есть я бы ожидал, что id будет уникально идентифицировать каждую строку в galleries, а другой столбец, скажем image_id, будет идентификаторомдля "изображения".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...