如何在一个表中获取暗示另一个表中的行的所有行?

时间:2016-07-24 08:37:20

标签: mysql sql

我有以下表格: 生产商:

Id Name
1  Dan
2  John

产品:

Id Name C_Id
1  AAA 1
2  BBB 2
3  CCC 1

我想做的是迭代每个供应商(一次),并打印它的产品。这样的事情:

{c.name} supllies {p.id} {p.name} 
Dan supplies 1 AAA and 3 CCC 
John supplies 2 BBB

从服务器获取此数据的正确方法是什么?因为现在我使用2个循环,我认为应该有一个更有效的方法。

while ($row = mysql_fetch_array(mysql_query("SELECT Id,Name FROM Suppliers")))
    $id = $row["id"];
    while ($row2 = mysql_fetch_array(mysql_query("SELECT Id,Name FROM Products WHERE C_Id = $id")))
       push each $row2 in $array
    print $array for each $row1

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用加入:

SELECT Suppliers.Id S_ID, Suppliers.Name S_NAME, Products.Id P_ID, Products.Name P_NAME FROM Suppliers LEFT JOIN Products ON Suppliers.Id = Products.C_Id