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


  tblproducts-> id(int,pk),name(varchar)
  
  tblphotos ---> id(int,pk),productid(int,fk),照片,订单


在tblphotos中,order字段是照片的显示顺序(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


还有一件事::我需要按升序排序

最佳答案

如果只需要第一张照片(顺序为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”的查询。

10-08 05:43
查看更多