PHP MySQL连接3个表并输出结果

时间:2014-08-08 13:08:51

标签: php mysql sql database select

我有三张表如下:

产品:

-----------------------------------------------------
|  itemID  |  itemName  |  categoryID  |  sellerID  |
-----------------------------------------------------
|  1       |  item1     |  c1          |  s1        |
|  2       |  item2     |  c1          |  s2        |
|  3       |  item3     |  c3          |  s2        |
|  4       |  item4     |  c2          |  s3        |
-----------------------------------------------------

分类

---------------------------------
|  categoryID  |  categoryName  |
---------------------------------
|  c1          |  category1     |
|  c2          |  category2     |
|  c3          |  category3     |
---------------------------------

卖家:

-----------------------------
|  sellerID  |  sellerName  |
-----------------------------
|  s1        |  seller1     |
|  s2        |  seller2     |
|  s3        |  seller3     |
-----------------------------

我想从 Items 表中选择其中categoryID为 c1 的项目,并按以下方式显示:

----------------------------------------------
|  itemName  |  categoryName  |  sellerName  |
----------------------------------------------
|  item1     |  category1     |  seller1     |
|  item2     |  category1     |  seller2     |
----------------------------------------------

我无法弄明白该怎么做。请帮助我。

5 个答案:

答案 0 :(得分:3)

查看JOIN

SELECT i.itemName, c.categoryName, s.sellerName
FROM Items i
JOIN Categories c
  ON c.id = i.categoryID
JOIN Seller s
  ON s.id = i.sellerID
WHERE i.categoryID = 'c1'

答案 1 :(得分:0)

这样的事情:

select items.itemName, categories.categoryName, seller.sellerName
from items
join categories on items.categoryId = categories.categoryId
join seller on items.sellerId = seller.sellerId
where categories.categoryId = ?

答案 2 :(得分:0)

SELECT itemName, categories.categoryName, seller.sellerName 
FROM items 
INNER JOIN categories ON items.categoryID = categories.categoryID 
INNER JOIN seller ON items.sellerID = seller.sellerID 
WHERE items.categoryID = 'c1' 

答案 3 :(得分:0)

试试这个:

$strSql = 'SELECT a.`itemName`,b.`categoryName`,c.`sellerName` FROM `Items` a INNER JOIN `Categories` b ON a.`categoryID` = b.`categoryID`
         INNER JOIN `Seller` c ON a.`sellerID` = c.`sellerID` WHERE a.`categoryID` = "c1" ';

答案 4 :(得分:0)

这只是创建正确连接的问题。在这种情况下,您需要将表附加到两个不同的东西。语法应如下所示:

$stmt = 'SELECT a.itemName,b.categoryName,c.sellerName FROM `[itemsTable]`
    inner join a  on b.categoryID  = a.categoryID  
inner join a on c.sellerID = a.sellerID';