如何使我的三个表sql加入工作?

时间:2015-11-21 23:55:25

标签: php mysql sql-server

我正在做一个项目。我试图通过INNER JOIN查询三个表..但是我没有工作......所以我想把这个问题暴露给你..所以有人可以帮忙..我的设计我的数据库是怎样的

项目表

id_item(PK, autoincrement) item_name (char, 100) item_price(char,10)
  1                         nike                  12000

集团表

id_groupe (PK, autoincrement) groupe_name (char, 100)
  1                             homme

颜色表

id_color (PK, autoincrement) name_color(char, 30)
  1                           white

item_groupe

it_ID (PK)  groupeid(PK)
 1           1

item_color

itemId(PK) colorId(PK)
 1           1

所以,我想要实现的是查询表以整理关于该项的以下信息: the item name, item price and item color。所以我运行了以下的SQL查询。

$sql ="SELECT items.id_item,item_name FROM items INNER JOIN item_color ON item_color.itemId=items.id_item INNER JOIN color ON color.id_color = item_color.colorId INNER JOIN
    item_groupe ON item_groupe.it_ID = id_item INNER JOIN groupe ON item_groupe.groupeid = groupe.id_groupe WHERE id_groupe =1";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();

有人可以帮忙!

1 个答案:

答案 0 :(得分:0)

深入了解这个片段:

SELECT i.item_name AS name, i.item_price AS price, c.name_color AS color
FROM items i
  JOIN item_color ic ON i.id_item = ic.itemId
  JOIN color c ON ic.colorid = c.id_color
  /*next two joins are necessary to filter item by group*/
  JOIN item_groupe ig ON i.id_item = ig.it_ID
  JOIN groupe g ON ig.groupeid = g.id_groupe
/*example of filtering product by name*/
WHERE g.id_groupe = 1

Full example

P.S。你的命名约定非常混乱:)