Выбор условий только при соблюдении обеих строк

0

Части таблицы, которые я просматриваю, следующие:

table: store_inventories

+---------+----------+-------+----------+
| stor_id | title_id | qty   | minStock |
+---------+----------+-------+----------+
| 8042    | TC7777   |   630 |      630 |
| 8042    | TH1217   |     0 |      630 |
| 9012    | AK1231   |  -100 |       13 |
| 9012    | AK4153   |     5 |        1 |
| 9012    | BU2075   |    39 |        7 |
| 7131    | AW1234   | 10277 |     2055 |
| 7131    | AW5678   | 13150 |     2630 |
| 7131    | BU1032   |   545 |      109 |
| 7131    | BU2075   |    35 |        7 |

Как я могу выбрать title_id из этой таблицы, где условия, которые будут соответствовать обеим (а не) файлам хранения 9012 и 7131.

Результат должен быть

+----------+
| title_id | 
+----------+
| BU2075   |

Я попробовал внутреннее соединение и использование и утверждение, но они либо возвращают неправильный результат, либо пустой набор.

Теги:

2 ответа

1
Лучший ответ

Используйте WHERE, чтобы отфильтровать stor_ids и HAVING чтобы подсчитать экземпляры строк в WHERE.

SELECT  title_id
FROM    store_inventories
WHERE   stor_ids IN (9012, 7131) -- 
GROUP   BY title_id
HAVING  COUNT(*) = 2

Используйте DISTINCT если заголовок может содержать несколько строк одного и того же хранилища.

HAVING  COUNT(DISTINCT stor_ids) = 2

Вот демо.

  • 0
    @anonyXmous это необходимо, так как пользователь специально упомянул об этом в своем посте.
  • 0
    Да, это. Благодарю.
1

Вы можете попробовать подключиться к подзапросам:

SELECT  a.title_id
FROM    (select title_id 
    from store_inventories
    where stor_id=9012) a
JOIN  (select title_id 
    from store_inventories
    where stor_id=7131) b
ON (a.title_id=b.title_id)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню