2017-09-15 41 views
-1

我有2个表,我在一个表中保存了entrys。例如,我提供智能手机的条目。

在每个条目上都可能有更多问题。比如像客户和供应商聊天。
将此问题保存在第二个表中。每个问题都会得到“入口ID”。

现在我想获得所有entrys并将每个条目的所有问题计为单个值。
例如
计数从第二个表连接到ID的所有行,并在第一个表的右侧添加值

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 q.eid = e.id 

但像这样,不是所有行都被选中,并且questioncount从所有问题中获取值,而不管eid = e.id.

+1

使用子查询,或者使用group by by join。 – 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 
相关问题