2017-11-08 3 views
0

を数える; mは、このクエリを使用して:MySQLのクエリ - SELECTの行は、私は私のデータベース</p> <p><a href="https://i.stack.imgur.com/Ofkb6.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Ofkb6.png" alt="enter image description here"></a></p> <p>そして私にこのテーブルを持っている他のテーブルから

SELECT cl.cl_id, cl.name, COUNT(*) 
FROM cl, st 
WHERE st.cl_id = cl.cl_id 
GROUP BY cl.cl_id 
ORDER BY cl.cl_id; 

番目のテーブル内のいくつかのcl_id値なので終了しないと、出力はstテーブルのどこにcl_idがあるかを返します。私が必要とするクエリは、このようなものです:

SELECT cl.cl_id, cl.name 
FROM cl; 

が、この

SELECT COUNT(*) 
FROM st 
WHERE st.cl_id = cl.cl_id; 

を実装するが、STでの表は、値の戻りcl_idから0

+1

今日のヒント:モダンで明示的な 'JOIN'構文に切り替えます。 (エラーなしで)書きやすく、読みやすく(維持しやすい)、必要に応じて外部結合に変換する方が簡単です。 – jarlh

+0

@jarlh今日の今日の第2のヒントだと思います。 – Strawberry

+0

@Strawberry、とても恥ずかしい、あなたは私を持っています... – jarlh

答えて

0

決してにすべての値を持っていない場合は、FROM句のコンマを使用します。 常には、適切で明示的なJOIN構文を使用します。あなたのケースでは、あなたが必要なことは明らかだろうLEFT JOIN

SELECT cl.cl_id, cl.name, COUNT(st.cl_id) 
FROM cl LEFT JOIN 
    st 
    ON st.cl_id = cl.cl_id 
GROUP BY cl.cl_id 
ORDER BY cl.cl_id; 
0

使用LEFT JOINと引数のリストから最初の非null値を返すCOALESCE機能、(ファンの回答に基づいて)

SELECT 
    COALESCE(st.cl_id,0) 
, COALESCE(st.name,'Name Not Found') 
, COUNT(cl.cl_id) 
FROM cl 
LEFT JOIN st 
    ON st.cl_id = cl.cl_id 
GROUP BY COALESCE(st.cl_id,0) 
ORDER BY COALESCE(st.cl_id,0) ; 
関連する問題

 関連する問題