[英]Joining two tables with multiple field sorting in MySQL
I have two tables and I have to join it. 我有两个桌子,我必须加入。 table structures are
表结构是
tblproducts --> id(int,pk), name(varchar)
tblproducts-> id(int,pk),name(varchar)
tblphotos ---> id(int,pk), productid(int,fk), photo(varchar), display_order(int)
tblphotos ---> id(int,pk),productid(int,fk),photo(varchar),display_order(int)
There can be more than one photos for each product, I need to get one photo with lowest display_order. 每个产品可以有一张以上的照片,我需要获得一张display_order最低的照片。
I need, tblproducts.id, tblproducts.name, tblphotos.photo(photo with least display_order) also I need to get the whole list as tblproducts.id in ascending order. 我需要tblproducts.id,tblproducts.name,tblphotos.photo(具有最小display_order的照片),我还需要以tblproducts.id的升序获取整个列表。
Select tblproducts.id, tblproducts.name, (Select Top 1 tblphotos.photo FROM tblphotos, tblproducts Where tblphotos.productid = tblproducts.id Order By display_order)
From tblproducts, tblphotos
Where tblproducts.id = tblphotos.productid
Order by tblproducts.id
EDIT : Oppss! 编辑 :对不起! I didn't see mysql tag.
我没有看到mysql标签。 This is for MSSQL by the way.
顺便说一下,这是针对MSSQL的。
Yes this query looks like repeating. 是的,此查询看起来像重复。 I should delete
Where
clause. 我应该删除
Where
子句。
Select tblproducts.id, tblproducts.name, (Select Top 1 tblphotos.photo FROM tblphotos, tblproducts Where tblphotos.productid = tblproducts.id Order By display_order)
From tblproducts
Order by tblproducts.id
I haven't tested the following query but it should work, give it a try: 我尚未测试以下查询,但它应该可以工作,尝试一下:
SELECT
p.id, p.name, f.photo
FROM
tblproducts p,
(
SELECT productid, MIN(display_order) AS min_display_order
FROM tblphoto
GROUP BY productid
) AS t,
tblphoto f
WHERE
p.id = t.productid AND
t.productid = f.productid AND
t.min_display_order = f.display_order
ORDER BY p.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.