Может кто-нибудь сказать мне, почему следующее не будет работать? Он жалуется на синтаксическую ошибку рядом с ключевым словом соединения между двумя вариантами выбора.
SELECT *
FROM ( select * from orders_products inner JOIN orders ON orders_products.orders_id = orders.orders_id where products_id = 181)
as A
join
SELECT *
FROM ( select * from orders_products INNER JOIN orders ON orders_products.orders_id = orders.orders_id where products_id = 180)
as B
on A.orders_id=B.orders_id
По сути, мой первый SELECT
извлекает всю информацию о заказе для определенного продукта из одной таблицы, вытягивает заказанное количество из другого и объединяет их вместе. Второй SELECT
делает то же самое для другого продукта.
Теперь у меня есть
_______A_________ _______B_________<br>
O_ID P_ID Q O_ID P_ID Q <br>
1 180 3 1 181 11<br>
2 180 9 2 181 6<br>
3 180 5 3 181 3<br>
И, используя другое объединение, я хочу получить
<br>Q_ID P_ID1 Q1 P_ID2 Q2
<br>1 180 3 181 11
<br>2 180 9 181 6
<br>3 180 5 181 3
Может быть, я ошибаюсь здесь. Есть предложения?
UPDATE:
Вот что сработало для меня после указателей RedFilter:
(SELECT *
FROM (
SELECT * FROM orders_products
INNER JOIN orders ON orders_products.orders_id = orders.orders_id
WHERE products_id =181) AS A
LEFT JOIN (
SELECT * FROM orders_products
INNER JOIN orders ON orders_products.orders_id = orders.orders_id
WHERE products_id =180) AS B ON A.orders_id = B.orders_id
)
UNION (
SELECT *
FROM (
SELECT *
FROM orders_products
INNER JOIN orders ON orders_products.orders_id = orders.orders_id
WHERE products_id =181
) AS C
RIGHT JOIN (
SELECT *
FROM orders_products
INNER JOIN orders ON orders_products.orders_id = orders.orders_id
WHERE products_id =180
) AS D ON C.orders_id = D.orders_id
)