MySQL несколько, где условия на то же поле в соединении - PullRequest
1 голос
/ 14 сентября 2011

У меня есть таблица с именем "orders" с

order_id
customer_name
item

, и я присоединяю ее к другой таблице с именем "orders_requests", содержащей

order_id
requests

Одна строка в "orders" может иметьноль или более строк в "order_requests".Я пытаюсь выполнить запрос, чтобы найти «заказы», ​​которые имеют «orders_requests» из «срочной обработки» и «бесплатная доставка».Я склоняюсь к ПРАВИЛЬНОМУ НАРУЖНОМУ СОЕДИНЕНИЮ с таблицей "orders_requests" слева, поэтому он возвращает результаты только в том случае, если существует соответствующая строка "orders", но у меня не было ни одного из этих запросов.

Этот не работает, так как он извлекает строки, которые обрабатываются в срочном порядке или бесплатной доставкой.

SELECT DISTINCT orders.order_id, orders.* , 
FROM orders_requests
RIGHT OUTER JOIN orders ON orders_requests.order_id = orders.order_id
WHERE orders_requests.requests
IN ('rush processing', 'free shipping')

И этот явно не работает, так как невозможно, чтобы одна строка соответствовала обоим условиям.

SELECT DISTINCT orders.order_id, orders.* , 
FROM orders_requests
RIGHT OUTER JOIN orders ON orders_requests.order_id = orders.order_id
WHERE orders_requests.requests = 'rush processing'
AND orders_requests.requests = 'free shipping'

Возможно ли то, что я пытаюсь сделать с помощью настройки моего стола, мне нужно изменить структуру?

1 Ответ

2 голосов
/ 14 сентября 2011

Я не уверен, что это сработает, так как я не могу проверить его, но попробуйте это:

select a.order_id, b.*, c.*
from orders a 
left outer join orders_requests b on b.order_id = a.order_id
left outer join orders_requests c on c.order_id = a.order_id
where b.requests = 'rush processing' and c.requests = 'free shipping'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...