sql查询加入两个表

时间:2011-10-19 04:50:17

标签: php mysql sql

我有2个表(mysql),一个用于产品名称,另一个用于产品图像。

  

tblproducts - > id(int,pk),name(varchar)

     

tblphotos ---> id(int,pk),productid(int,fk),photo,order

在tblphotos中,订单字段是照片的显示顺序(1,2,3 ...)

每种产品可以有超过1张照片。我需要产品的第一张照片(订单= 1)

我需要的是tblproducts.id,tblproducts.name,tblphotos.photo(照片必须是订单1的那个)

我写了以下查询,但我的产品名称正在重复

   SELECT tblproducts.id,tblproducts.name, tblphotos.photo 
     FROM tblproducts 
LEFT JOIN tblphotos on tblphotos.productid = tblproducts.id

还有一件事::我需要按升序对订单进行排序

3 个答案:

答案 0 :(得分:3)

如果您只想要第一张照片(订单= 1的照片),那么您需要在查询中指明:

SELECT
    PR.id AS product_id,
    PR.name,
    PH.photo
FROM
    Products PR
LEFT OUTER JOIN Photos PH ON
    PH.product_id = PR.id AND
    PH.`order` = 1

由于order可能是保留字,因此我将其包含在MySQL的默认引用标识符中。不过,你最好使用不同的列名。另外,我不能让自己在表名前写一个带“tbl”的查询。

答案 1 :(得分:0)

试试这个:

SELECT tblproducts.id,tblproducts.name, tblphotos.photo 
FROM tblproducts LEFT JOIN tblphotos on tblphotos.productid = tblproducts.id 
and tblphotos.order=1

答案 2 :(得分:-1)

我认为这对你有用

SELECT tblproducts.id, tblproducts.name, tblphotos.photo 
FROM tblproducts 
LEFT JOIN tblphotos on tblphotos.productid = tblproducts.id
   and tblphotos.order=1;