簡體   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