我有3个数据库的数据库:categories
,items
,relation
。 categories
包含类别。商品存储在items
中,relation
是一个绑定表,它存储产品ID和类别ID或类别。
如何获取给定的项目列表,获取所有类别的名称?
答案 0 :(得分:3)
加入他们:
SELECT *
FROM relation r
INNER JOIN items i ON r.id_items = i.id
INNER JOIN categories c ON r.id_cat = c.id
请注意,INNER JOIN仅选择两个表中显示的记录。 *这里选择所有列。如果不想要所有这些,你可以选择你想要的那些:i.id,i.name,c.id,c.name等。
答案 1 :(得分:2)
您可以像这样简单地尝试LEFT JOIN
。
SELECT
*
FROM
items AS i
LEFT JOIN relation AS r ON i.id = r.id_items
LEFT JOIN categories AS c ON r.id_cat = c.id
希望这有帮助。
上面的查询将为您提供在关系表中甚至映射的所有项目,而以下查询将仅为您提供已在表格关系中定义关系的项目
SELECT
*
FROM
items AS i
RIGHT JOIN relation AS r ON i.id = r.id_items
LEFT JOIN categories AS c ON r.id_cat = c.id
如果您收到任何错误,请告诉我。
答案 2 :(得分:1)
SELECT distinct(c.name) from categories c
JOIN relation as r on c.id = r.id_cat
JOIN items as c on i.id = r.id_items
WHERE i.id in (8, x, y, z, ...etc)