我有一个表category将类别编号链接到类别名称。
例如,1-水果,2-蔬菜,3-昆虫,4-城市等。。。
我有另一个item表,其中的项正好属于一个类别。每个项目都有一个唯一的id、名称及其类别。例如,314南瓜-(类别)1
简而言之:

category
-------
c_id   (int)
c_name (varchar)

item
-------
i_id   (int)
i_name (varchar)
i_cat  (int)

问题是并非所有类别都有项。我已使用以下方法按类别订购项目:
$STH = $DBH->prepare("SELECT * FROM item ORDER BY i_cat");

这被构建到一个表中,当cat(egory)改变时提取标题。当然,没有项目的类别不会被选取。
我想要的是一个包含所有类别(甚至那些没有实际项目)的表,并且在每个类别下面列出正确的项目。
我可以想出一些繁琐的方法来做我想做的事,但必须有一个简洁的解决办法。如何将两个表中的数据合并到一个调用中,以便每个类别和每个项都存在?我认为它涉及到inner join的使用,但我看不出如何有效地使用它。
谢谢。

最佳答案

尝试以下查询,它将从category表中获取所有类别,并从item表中获取相应项:

SELECT *
FROM category c
LEFT JOIN item i
ON c.c_id = i.i_cat
ORDER BY i_cat

关于php - MySQL加入-将类别表与数据表结合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10069309/

10-14 13:35
查看更多