繁体   English   中英

左连接与左表值与 select 查询

[英]Left join with left table values with select query

我想要一个查询,我可以在 select 查询中显示左表值。

基本上,左列的 A 列具有相同的值,但 B 列具有不同的值,因此 group_concat 左表中的 b 列值。

在下面的查询中,我在单独的行中获取每个标题,但我希望它与 commerce_order_item.order_id 位于同一行,因为 commerce_order_item.order_id 包含相同的值,所以想要 group_concat(commerce_order_item.title)

 SELECT commerce_order.order_id, commerce_order.mail, commerce_order.total_price__number, commerce_order.changed, commerce_order_item.title FROM commerce_order LEFT JOIN commerce_order_item ON commerce_order.order_id = commerce_order_item.order_id WHERE cart = 1 AND commerce_order.changed BETWEEN $startdate AND $endates

下面是对 group_concat 的查询

SELECT order_id, GROUP_CONCAT(title) FROM commerce_order_item GROUP BY order_id;

结果查询

SELECT commerce_order.order_id, commerce_order.mail, commerce_order.total_price__number, commerce_order.changed, commerce_order_item.title FROM commerce_order LEFT JOIN commerce_order_item ON commerce_order.order_id = commerce_order_item.order_id WHERE cart = 1 AND commerce_order.changed BETWEEN 1640998861 AND 1641258061 AND commerce_order_item.title = (SELECT GROUP_CONCAT(commerce_order_item.title) FROM commerce_order_item GROUP BY commerce_order_item.order_id)

以下是示例表:

commerce_order

commerce_order tabe as below
+--------+---------------+--------------+-----------+
|order_id|       mail|   | Total Price  | changed   |
+--------+---------------+------+-------+-----------+
|    1   |abc@gmail.com  |      1000    |1641276265 |   
|    2   |abc1@gmail.com |      5000    |1641276266 |
|    3   |abc2@gmail.com |      100     |1641276267 |
|    4   |abc3@gmail.com |      1001    |1641276268 |
|    5   |abc4@gmail.com |      10000   |1641276269 |

commerce_order_item table as below

+--------+-------+
|order_id| title |
+--------+-------+
|    1   |   abc |
|    1   |   xyz |
|    1   |   def |
|    2   |   ghi |
|    2   |   lmn |

Result should be:
Order Id | Mail           | total Price | Time(timestamp)| title 

1         abc@gmail.com    1000          1641276265         abc,xyz,def
2         abc1@gmail1.com  5000          1641276266         ghi,lmn 
 

这不是给你你想要的吗?

SELECT commerce_order.order_id
, commerce_order.mail
, commerce_order.total_price__number
, commerce_order.changed
, GROUP_CONCAT(commerce_order_item.title)
FROM commerce_order 
LEFT JOIN commerce_order_item ON commerce_order.order_id = commerce_order_item.order_id 
WHERE cart = 1 
AND commerce_order.changed BETWEEN 1640998861 AND 1641258061 
GROUP BY commerce_order.order_id
, commerce_order.mail
, commerce_order.total_price__number
, commerce_order.changed

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM