簡體   English   中英

從請求中的表2到表1計數用戶

[英]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 = booked3 = placed

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM