我在使用两个SQL请求进行JOIN时遇到了一些问题
请求1:
SELECT *
FROM `tableA`
INNER JOIN tableB
ON tableA.products_id=tableB.products_id
LEFT JOIN tableC
ON tableB.products_id=tableC.products_id
LEFT JOIN tableD AS CD
ON CD.categories_id=tableC.categories_id
WHERE orders_id >=80000 AND orders_id <=80010 GROUP BY orders_id
请求2:
SELECT *
FROM `tableA` AS OP
LEFT JOIN tableE AS PTP
ON OP.products_id=PTP.products_id
LEFT JOIN tableD AS CD
ON PTP.categories_id=CD.categories_id
WHERE orders_id >=80000 AND orders_id <=80010 GROUP BY orders_id
这两个请求只能做一个请求吗?或者这是不可能的? 感谢您提供的任何帮助
答案 0 :(得分:1)
当您从同一个表中选择相同的列时,可以使用Union。 你甚至可以通过外部sql中的orders_id进行分组:
(SELECT a FROM t1 WHERE a=10 AND B=1)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2)
GROUP BY orders_id
但是在PHP中,一个请求不能进行2次查询,你必须形成你的sql-query
答案 1 :(得分:1)
我无法得到您想要做的事情,但我的猜测是您想要将tableE(PTP)中的数据包含在您的第一个查询中。在这种情况下,您可以这样做:
SELECT
*
FROM
`tableA`
INNER JOIN
`tableB` ON (`tableA`.`products_id` = `tableB`.`products_id`)
LEFT JOIN
`tableE` AS `PTP` ON (`tableA`.`products_id` = `PTP`.`products_id`)
LEFT JOIN
`tableC` ON (`tableB`.`products_id` = `tableC`.`products_id`)
LEFT JOIN
`tableD` AS `CD` ON (`CD`.`categories_id` = `tableC`.`categories_id` OR `PTP`.`categories_id` = `CD`.`categories_id`)
WHERE
`orders_id` >= 80000
AND
`orders_id` <= 80010
GROUP BY
`orders_id`