2017-09-15 8 views
-1

2つのテーブルを1つのテーブルに保存します。例えば、私がスマートフォンを提供するエントリのように。

各エントリにはさらに質問があります。たとえば、顧客やサプライヤのチャットなど。
この質問は2番目のテーブルに保存されます。それぞれの質問は「エントリID」を取得します。

今私はのすべてのエントリーを得たいと思いますし、各エントリーのすべての質問を一つの値として数えます。たとえばについては

idで接続された2番目のテーブルからすべての行を数え、最初のテーブルの右側の行に値を追加します。

id |title  | desc     | questionscount 
1 |samsung s7.. | smartphone bla bla | 11 
2 |samsung s6.. | bla bla bla   | 5 
3 |samsung s5.. | bla bla    | 0 

本当に近い私は私のSQLを単純化し、私はイムと思う:

SELECT 
    e.id, e.uid, e.tmstmp, e.title, e.desc, questioncount 
FROM 
    entrys e 

INNER JOIN 
    (
     SELECT eid, COUNT(id) as questioncount 
     FROM question 
     WHERE eid = e.id 
) q 

- 'where句'

中>不明な列 'e.id' を

私は "on"のように "inner"でそれらを結合しようとしました:

ON q.eid = e.id 

などですが、すべての行が選択されているわけではなく、questioncountがeid = e.idに関係なくすべての質問から値を取得するわけではありません。

+1

サブクエリを使用するか、join with group byを使用します。 – RRK

答えて

1

サブクエリ

SELECT e.id, e.uid, e.tmstmp, e.title, e.desc, 
(SELECT COUNT(q.id) FROM question q WHERE q.eid = e.id) AS questioncount 
FROM entrys e 
+0

本当にありがとうございました。 – delato468

3

使用としてカウント数を選択しますので、それは各エントリが質問を持っているかどうかentrysからすべての行を返します参加残しました。

SELECT 
    e.id, e.uid, e.tmstmp, e.title, e.desc, COUNT(q.id) questioncount 
FROM 
    entrys e 
LEFT JOIN question q on e.id = q.eid 
GROUP BY e.id 
関連する問題