[英]Count users from table 2 in request to table 1
我有職位表
tbl_positions
id position
1 Driver
2 Lobby
3 Support
4 Constructor
在其他表格中我有用戶
tbl_workers
id name position status
1 John 2 3
2 Mike 3 2
3 Kate 2 3
4 Andy 1 0
我確實要求職位
沒有狀態,我選擇此查詢的所有內容。
SELECT p.id, p.position, count(*) FROM tbl_positions as p
inner join tbl_workers as w on w.position=p.id
group by p.id, p.position
但是現在我需要輸出相同的查詢,但還要考慮狀態,狀態2 =預訂狀態,3 =放置。 我需要在單個查詢中這樣的輸出。
Position booked placed
Driver 0 0
Lobby 0 2
Support 1 0
Constructor 0 0
我嘗試添加WHERE tbl_workers.status IN (2)
進行預訂,並添加WHERE tbl_workers.status IN (3)
進行放置,並且可以在兩個查詢中使用,但是沒有運氣將其加入一個查詢中
嘗試這個:
SELECT p.id,
p.position,
SUM(CASE w.Status WHEN 2 THEN 1 ELSE 0 END) AS booked,
SUM(CASE w.Status WHEN 3 THEN 1 ELSE 0 END) AS placed
FROM tbl_positions AS p LEFT JOIN tbl_workers AS w
ON w.position=p.id
GROUP BY p.id, p.position
盡管您可以使用單個SQL查詢來執行此操作,但是使用PHP處理該操作可能更直接 。
使用當前查詢並將status
添加到GROUP BY
。
SELECT p.id, p.position, w.status, count(*) FROM tbl_positions as p
inner join tbl_workers as w on w.position=p.id
group by p.id, p.position, w.status
您將獲得如下結果集:
position status count
Driver 2 0
Lobby 2 0
Support 2 1
Constructor 2 0
Driver 3 0
Lobby 3 2
Support 3 0
Constructor 3 0
使用PHP從邏輯上確定2 = booked
和3 = placed
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.