2013-08-24 135 views
1

我想爲搜索框執行下面的MySql查詢。我試圖返回「專輯」信息(標題等),同時在該專輯中包含第一張圖片的縮略圖。但是,我必須查找兩張表來獲取圖像信息。首先,包含該相冊中所有圖像的photos_albums從該表中獲取第一個圖像ID,然後在photos表中查找該圖像信息。我相信我遇到的問題是我需要告訴第一個LEFT JOIN將查詢限制爲1,但我沒有這樣做的運氣。我想我需要在JOIN中進行JOIN?任何幫助,將不勝感激。MySql左加入內左連接

SELECT albums.title, albums.title_url, photos.path, photos.medType, photos.vpath 
FROM albums 
LEFT JOIN photos_albums 
    ON photos_albums.album_id = albums.id 
LEFT JOIN photos 
    ON photos_albums.photo_id = photos.id 
WHERE albums.user = '$site_user' 
AND (
    albums.title LIKE '$keyword%' 
    OR albums.title LIKE '% $keyword%') 
LIMIT 6 

回答

2

你可以嘗試這樣的事情

SELECT a.title, a.title_url, q.path, q.medType, q.vpath 
    FROM albums a LEFT JOIN 
(
    SELECT pa.album_id, pa.photo_id, p.path, p.medType, p.vpath 
     FROM 
    (
     SELECT album_id, MIN(photo_id) photo_id 
      FROM photos_albums 
     GROUP BY album_id 
    ) pa JOIN photos p 
     ON pa.photo_id = p.id 
) q 
    ON a.id = q.album_id 
WHERE a.user = '$site_user' 
    AND (
     a.title LIKE '$keyword%' 
     OR a.title LIKE '% $keyword%') 
LIMIT 6 
+0

你好Peterm。謝謝您的幫助。原諒我,但我對'a.title','q.path'和'albums a'等有點困惑。這些只是我的專欄名稱的簡寫「佔位符」 - 或者我會爲您輸入查詢有它?對不起 - 仍然在這裏學習;) – Chris

+1

這些是表別名(就像列別名)。我喜歡簡短地縮短一個或兩個字母。我建議從我的建議開始,然後你可以調整它,重命名別名,如果你想... – peterm

+1

這很好 - 非常感謝。我將不得不對桌面別名進行一些研究,因爲我以前從未見過它們。再次 - 我真的很感謝幫助。 – Chris