2017-03-20 72 views
0

我需要添加一個條件,該條件只選擇字段(my_galleries.format)等於字符串值'pictures'的行。我試圖將其添加到此工作的SQL語句。SQL進一步加入和過濾

SELECT 
    gallery_url, 
    preview_url 
FROM 
    my_galleries, 
    my_gallery_previews 
WHERE 
    my_galleries.gallery_id = my_gallery_previews.gallery_id 

我想這一點,沒有運氣....

SELECT 
    gallery_url, 
    preview_url 
FROM 
    my_galleries, 
    my_gallery_previews 
WHERE 
    my_galleries.gallery_id = my_gallery_previews.gallery_id 
    AND my_galleries.format='pictures' 

任何想法?

+0

你得到的結果是什麼?備註:使用[連接表](https://www.w3schools.com/sql/sql_join.asp)的較新版本,而不是您使用的版本。 – ahoxha

+0

看起來對我很正確。也許嘗試:從my_galleries.format ='pictures'my_galleries中選擇my_galleries.format,以查看該表中是否有任何匹配。如果你這樣做,那麼我懷疑你的加入排除了這些行。 – Degan

回答

0

我建議不要使用FROM foo, bar WHERE foo.key = bar.key的方法來執行JOIN,因爲它不是非常靈活,並且對您的代碼的新讀者不明顯。相反,你應該執行一個明確JOIN來代替:

SELECT 
    gallery_url, 
    preview_url 
FROM 
    my_gallery_previews 
    INNER JOIN my_galleries ON my_gallery_previews.gallery_id = my_galleries.gallery_id 
WHERE 
    my_galleries.format = 'pictures' 
0

你怎麼樣試試這個

SELECT gallery_url, preview_url FROM my_galleries 
JOIN my_gallery_previews ON 
my_galleries.gallery_id = my_gallery_previews.gallery_id 
WHERE my_galleries.format='pictures' 

隨着加入,確保各自的表前綴所選列。我希望這可以幫助

0

正如其他人所說,我建議您使用新的連接結構,因爲它更具可讀性。

SELECT mg.gallery_url, 
     mgp.preview_url 
    FROM my_galleries  mg 
    JOIN my_gallery_previews mgp ON mg.gallery_id = mgp.gallery_id 
           AND mg.format = 'pictures' 

您可以使用AND語句將過濾條件放入連接中。 (只是另一種方式)

您的查詢看起來是正確的語法。我建議通過你的數據集或編輯它到你的問題。目前沒有圖片庫預覽可能與現有的圖庫行共享圖庫標識,這會阻止連接的運行。