【发布时间】:2026-02-17 22:05:01
【问题描述】:
谁能告诉我为什么以下不起作用?它抱怨两个选择之间的连接关键字附近的语法错误。
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_________O_ID P_ID Q O_ID P_ID Q
1 180 3 1 181 11
2 180 9 2 181 6
3 180 5 3 181 3
而且,使用另一个加入我想得到 p>
Q_ID P_ID1 Q1 P_ID2 Q2
1 180 3 181 11
2 180 9 181 6
3 180 5 181 3
也许我在这里采取了错误的方法。有什么建议吗?
更新: 在 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
)
【问题讨论】:
-
嗯,所有的加入看起来都没有必要......
-
你能描述一下你想从这个查询中检索什么吗?可能有更有效的方法。