亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果沒有符合條件的行在第二個表中計數,如何顯示一個表中的所有行

如果沒有符合條件的行在第二個表中計數,如何顯示一個表中的所有行

PHP
素胚勾勒不出你 2021-06-30 18:41:52
我有兩張桌子?!癿embers”是所有成員的列表,“stats”是工作日期的列表。共享字段是 memberID。我需要一個每個人工作天數的 COUNT,我希望每個人都列在輸出表中,即使他們還沒有工作日。簡化的數據庫結構是:**members**                 **stats**       memberID lname    fname     memberID    date    statsID1        Mertz    Fred      1        2017-12-31    12        Doe      Jane      3        2017-12-31    23        Smith    Frank     4        2017-12-31    34        Ricardo  Lucy      2        2018-12-31    45        Starr    Ringo     4        2018-12-31    5                            2        2019-05-05    6                            3        2019-05-05    7所需的輸出是:memberID  lname  fname  Total Days 2         Doe    Jane       2 1         Mertz  Fred       1 4         Ricardo Lucy      2 3         Smith   Frank     2 5         Starr   Ringo     0 OR blankRingo 還沒有工作幾天,也沒有出現在輸出表中。我的代碼是:$sql = "SELECT  u.*,   COUNT(s.memberID)as tot_days   FROM members u   LEFT JOIN stats s    ON s.memberID = u.memberID     GROUP BY s.memberID    ORDER BY lname,fname";$members = mysqli_query($dbc,$sql) or die(mysqli_error());while ($row = mysqli_fetch_array($members)){         $row = array_map('htmlspecialchars', $row);        echo <<< HTML  etc.這完成了我想要它做的所有事情,除了那些還沒有工作一天的成員。JOIN、LEFT JOIN、LEFT OUTER JOIN、RIGHT JOIN、RIGHT OUTER JOIN 都產生相同的結果。我嘗試了 LEFT 和 RIGHT INNER JOIN,如果它們存在的話,就會產生錯誤Warning: mysqli_error() expects exactly 1 parameter, 0 given。有人建議使用,COALESCE (COUNT(s.memberID),0) as tot_days但這只會產生與上述相同的錯誤。我已經在這里待了好幾天了,我感到有點沮喪!
查看完整描述

2 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

SELECT u.*

     , COUNT(DISTINCT s.date) tot_days

  FROM members u

  LEFT 

  JOIN stats s

    ON s.memberID = u.memberID

 GROUP 

    BY u.memberID

 ORDER 

    BY u.lname

     , u.fname


查看完整回答
反對 回復 2021-07-02
  • 2 回答
  • 0 關注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號