У меня есть следующий SQL:SQL вернуть слит набор результатов
SELECT `table1`.`value`, `table2`.*
FROM `table2`
INNER JOIN `table1` ON `table2`.`product_id` = `table1`.`entity_id`
WHERE `table2`.`created_at` > '2012-04-23' and
(`table1`.`value` = 264 OR `table1`.`value` = 260)
order by order_id
который возвращает набор результатов, как это (Это только часть возвращенных результатов):
value order_id ...
260 1234
260 1235
260 1236
264 1236
260 1237
260 1238
260 1239
264 1239
264 1240
260 1241
Я хочу получить запрос, который будет принимать эти результаты и только возвращать заказы, где order_id содержит как значение 260, так и 264. Исходя из этого примера, конечный результат, который я ищу, -
260 1236
264 1236
260 1239
264 1239
Я думал, что это можно сделать с помощью подмножества, но я не совсем уверен в деталях, чтобы выполнить его.
У меня трудно понять это. Можете ли вы создать SQLfiddle с некоторыми тестовыми данными? – Hawkee
вам нужны как 'value', так и' order_id' или просто список 'order_id', которые имеют значение 260 и 264?первый случай уже ответил, последний - это простое самосоединение (это будет намного быстрее). – Aprillion
@deathApril Хороший вопрос о самосоединении, с оговоркой, что будет сложнее расширить, когда список вырастет до 3 'order_id's ... then 4, 5 .... –