我有3個表COUNT()沒有DISTINCT多LEFT JOIN
orders
-----------------
| id | order_data |
-----------------
codes
-----------------------------
| id | code_data | order_id |
-----------------------------
actions (please note, in the table the primary key doesn't exists)
--------------------------
| action_name | order_id |
--------------------------
我怎樣才能通過順序計數動作的次數,如果行動行在表actions
沒有獨特的價值,因而在DISTINCT
COUNT()
沒有意義。 我的查詢:
SELECT `orders`.*, COUNT(DISTINCT `codes`.`id`), COUNT(`actions`.`action_name`)
FROM `orders`
LEFT JOIN `codes` ON `codes`.`id` = `orders`.`id`
LEFT JOIN `actions` ON `actions`.`id` = `orders`.`id`
WHERE `actions`.`action_name` IN (/*some values*/)
GROUP BY `orders`.`id`
你爲什麼左側的接合部到動作時,你的WHERE子句呈現LEFT過時了嗎?什麼是代碼,每個訂單有多少? '如果操作行在表操作中沒有唯一值,那麼如何按順序計算操作次數,因此COUNT()中的DISTINCT沒有意義。「 < - 我很難理解這句話 – Arth
我認爲內部連接會幫助你。 – Mashtani
更改與和的位置。 @我認爲這是問題的關鍵。 – Strawberry