我有 2 个表,第一个表我希望它显示所有结果,没有“位置”或任何限制它的东西。
第二个表我想将一个 id 与第一个表匹配,它可以有多行引用它,所以我想计算这个数字。
所以让我们说第一个表是这样的:
ID - name
1 - one
2 - two
3 - three
4 - four
第二张桌子是这样的
ID - REF
1 - 1
2 - 1
3 - 2
4 - 2
5 - 3
6 - 3
7 - 4
8 - 4
我想像这样组合它们:
ID - name - count
1 - one - 2
2 - two - 2
3 - three- 2
4 - four - 2
我尝试过使用子查询、左连接、右连接、内连接、子查询连接、分组,十有八九我得到了我应该得到的 1300 个结果中第一个 ID 的 20 个结果。其余的我只得到一个不正确的计数,没有名字。
我觉得这是 MySQL 101,但在尝试了多种变体但一无所获后,我觉得一定有一些我遗漏的东西。
我很乐意被引导到一个处于完全相同情况的问题(2 小时的查找,并且没有任何类似的工作)或者一个简单的查询来指出这种方法的逻辑,在此先感谢任何人答案,你会让我很开心。
如果需要任何其他信息,请告诉我,我故意省略了查询,因为我已经对其进行了很多次调整,以至于它没有太大的相关性(我必须列出我尝试过的每个查询,这将远远超过滚动)
好的,我已经测试了第一个和答案,它似乎在这种情况下有效,所以我将扩展我的答案,问题是“已回答”,所以如果没有回复,这只是一个扩展,我将用以下答案结束它:
SELECT t.id, t.name, count(*) AS suppliers
FROM #__tiresku AS t
LEFT JOIN #__mrsp AS m ON t.name = m.tiresku_id
GROUP BY t.id, t.name
扩展是一个内部连接,我有另一个表,它更像是一个列表,它有一个 id 和一个名称,就是这样,我用一个 id 引用该表来获取“名称”。
这可能有更好的选择然后加入(如外键或其他东西)。
我已将此添加到选择中b.name AS brand_name
和一个加入INNER JOIN #__brands AS b ON t.brand = b.id
使用子查询而不是加入