2015-01-20 61 views
0

我有兩個表:tblBusinesses,那都是這樣的tblBusinesses.fldID = tblBusinessImages.fldBusinessID匹配tblBusinessImages:選擇與最小值行一列,在連接查詢

tblBusinesses 
============= 
fldID | fldName | fldTitle | fldBody 
------------------------------------- 
1  | b1  | title1 | body1 
2  | b2  | title2 | body2 
3  | b3  | title3 | body3 
4  | b4  | title4 | body4 

tblBusinessImages 
============= 
fldID | fldFileName | fldTitle | fldBusinessID | fldOrder 
----------------------------------------------------------- 
1  | img1.jpg | img1title | 1    | 3 
2  | img2.jpg | img2title | 1    | 1 
3  | img3.jpg | img3title | 1    | 2 

我想寫一個針對tblBusinesses中的每個業務獲取的查詢,tblBusinessImages中具有最小fldOrder的圖像。換句話說,在我上面寫的例子中,我想從tblBusinessImages中獲取商業b1,title1,body1以及img2.jpg(因爲它在tblBusinessImages中具有最小的fldOrder)。

任何幫助,將不勝感激!

+0

訂單是否始終以每個businessID開頭1? – 2015-01-20 20:48:35

回答

0

如果fldOrder alwyas開始於一個每個fldBusinessID查詢變得

SELECT b.fldName, b.fldTitle, b.fldBody, i.fldFileName 
FROM 
    tblBusinesses b 
    LEFT JOIN tblBusinessImages i 
     ON (b.fldID = i.fldBusinessID AND i.fldOrder = 1) 

如果沒有,你將不得不使用子查詢。

SELECT b.fldName, b.fldTitle, b.fldBody, firstImage.fldFileName 
FROM 
    tblBusinesses b 
    LEFT JOIN (
     SELECT i.fldBusinessID, i.fldFileName 
     FROM 
      tblBusinessImages i 
     WHERE 
      i.fldOrder = (SELECT MIN(x.fldOrder) 
          FROM tblBusinessImages x 
          WHERE x.fldBusinessID = i.fldBusinessID) 
    ) firstImage 
     ON b.fldID = firstImage.fldBusinessID 

請注意,左連接使查詢返回也沒有圖像的企業。

如果您只需要有圖像項,其中最小的訂單ID可爲任意值:

SELECT b.fldName, b.fldTitle, b.fldBody, i.fldFileName 
FROM 
    tblBusinesses b 
    INNER JOIN tblBusinessImages i 
     ON b.fldID = i.fldBusinessID 
WHERE 
    i.fldOrder = (SELECT MIN(x.fldOrder) 
        FROM tblBusinessImages x 
        WHERE x.fldBusinessID = i.fldBusinessID) 
+0

謝謝。這有幫助! – 2015-01-30 15:24:41

0

你只想得到一個條目具有最小fldOrder? 未測試此查詢:

SELECT b.fldName,b.fldTitle,b.fldBody,bi.fldFileName,bi.fldOrder 
FROM tblBuisnesses b 
INNER JOIN tblBuisnessImages bi ON bi.fldBusinessID=b.fldID ORDER BY b.fldOrder DESC LIMIT 1; 
+0

非常感謝 – 2015-01-30 15:30:15