[英]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.