计数不正确的mySQL JOIN语句
我试图编写一个mySQL语句,它从一个表中选择数据,但在特定字段中使用匹配的ID统计另一个表中的条目 这两个表是计数不正确的mySQL JOIN语句,mysql,Mysql,我试图编写一个mySQL语句,它从一个表中选择数据,但在特定字段中使用匹配的ID统计另一个表中的条目 这两个表是作业和作业卡。一个作业始终是一个具有多个作业卡的条目,因此我需要编写一个单数语句,从作业表中选择数据,但在结果中添加另一个字段,该字段是所有相关作业卡的计数 例如: 作业表格: | ID | customer | status | date_added | |----------------------------------------| | 1 | 3
作业
和作业卡
。一个作业始终是一个具有多个作业卡的条目,因此我需要编写一个单数语句,从作业表中选择数据,但在结果中添加另一个字段,该字段是所有相关作业卡的计数
例如:
作业
表格:
| ID | customer | status | date_added |
|----------------------------------------|
| 1 | 3 | active | 2017-10-10 |
------------------------------------------
job\u cards
表有点复杂,但包含一个名为job\u id
的列,在本例中该列为1。但是假设上面的工作分配了3张卡片。我写了以下声明:
SELECT j.*, COUNT(jc.id) AS card_count FROM jobs j LEFT JOIN job_cards jc ON j.id = jc.job_id
但是,“计数”列仅返回job\u cards
表中的卡片总数,而不管它们分配给哪个作业。不仅如此,它还只返回一个结果,即使此时jobs
表中有4个条目
有没有办法用一条语句来完成我需要做的事情
编辑:
作业卡表中的示例数据:
| ID | job_id | customer | description | materials | notes |
|--------------------------------------------------------------|
| 1 | 1 | 3 | blah blah | none | test |
| 2 | 1 | 3 | something | pipes | n/a |
----------------------------------------------------------------
我希望得到的结果是:
| ID | customer | date_added | card_count |
|-------------------------------------------|
| 1 | 3 | 2017-10-10 | 2 |
---------------------------------------------
此处的ID是作业的ID。您可以尝试以下方法:
SELECT *, (select count(*)
from job_cards jc
where jc.job_id=j.id) as card_count
FROM jobs j
使用distinct COUNT(distinct jc.id)您已错过GROUPBY子句。请发布更多的样本数据和预期结果。这将对我们有很大帮助。