如何查询2个表的关系由另一个pk描述到pk表?

时间:2017-09-12 12:04:56

标签: mysql sql

我有3个数据库的数据库:categoriesitemsrelationcategories包含类别。商品存储在items中,relation是一个绑定表,它存储产品ID和类别ID或类别。

enter image description here enter image description here enter image description here

如何获取给定的项目列表,获取所有类别的名称?

3 个答案:

答案 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)