2012-03-09 8 views
1

をCOUNT(と修飾子)を追加します私はすべての行を表示しようとしていますは私のデータベースは3行(いないすべての列がリストされている)は、SQL文に

SELECT COUNT(CASE WHEN u.uApp = 'approved' THEN 1 END) AS Approved, 
     COUNT(CASE WHEN u.uApp = 'declined' THEN 1 END) AS Declined, 
     u.uID, u.uManT, u.uFirst AS 'NomFN', m.uFirst AS 'ManFN', u.uLast AS 'NomLN', m.uLast AS 'ManLN', u.uNomd, u.uApp, u.uApp, u.uAppd, u.uRep, u.uRepd, u.uManT, u.uStatus, u.uManR 
      FROM users AS u LEFT OUTER JOIN users AS m 
      ON u.uManT = m.uID 
      WHERE u.uManR = " . $luID . " 
      AND u.uStatus = 'Physician' 
      ORDER BY u.uLast ASC"; 

、および数のカウント:COUNTを追加しようと、それだけで1行(承認されたもの)を表示します承認されたユーザーの私は間違って何をしていますか?あなたがGROUP BYを使用していないので、この場合は

+0

あなたはSUMを使用することを意味しましたか? – Paulpro

+0

SHOW CREATE TABLEユーザー – rkosegi

答えて

0

がちょうど1行を返して、このクエリは何をしたいあなたを取得する必要があります:

SELECT COUNT(uFirst) AS Total, u.uID, u.uManT, 
    u.uFirst AS 'NomFN', m.uFirst AS 'ManFN', u.uLast AS 'NomLN', 
    m.uLast AS 'ManLN', u.uNomd, u.uApp, u.uApp, u.uAppd, u.uRep, 
    u.uRepd, u.uManT, u.uStatus, u.uManR 
FROM users AS u 
LEFT OUTER JOIN users AS m ON u.uManT = m.uID 
WHERE u.uManR = " . $luID . " AND u.uStatus = 'Physician' 
GROUP BY uApp 
ORDER BY u.uLast ASC"; 
+0

このステートメントも機能します。上記のようないくつかのグループをグループ化するよりも、1列のみをグループ化する方が良いでしょうか? – user1041931

+0

これは、あなたが望むものに依存します。基本的にカウントし、この場合のように1つのフィールドでグループ化すると、各uAppのuFirstレコードの数がカウントされます。Michael Fredricksonによって与えられた解はすべてのレコードを数えます。どちらも有効な解決策ですが、結果はあなたが期待しているものによって異なります) – DarkAjax

+0

OK、ありがとうございます。しかし、依然としてApprovedの数を表示するのに問題があります(また、あなたのソリューションには私のケースが含まれません:u.uApp = 'approved' THEN 1 END)。 'Approved'、echo $ row ['Approved'];を取得しようとすると、0が返されます。 – user1041931

関連する問題