php
  • sql
  • phpmyadmin
  • 2010-08-31 71 views 1 likes 
    1

    Table IMAGES查詢SQL,並得到結果爲外鍵的值(未標識)

    • columns- imageID, Image, and categoryID*(this being the foreign key)

    Table CATEGORIES

    • columns categoryID, Category

    和[執行查詢例如:

    $sql = "SELECT categoryID FROM IMAGES WHERE image = 'exampleImage'"; 
    

    我會得到的結果作爲類別ID的整數即1

    我的問題是什麼是顯示該ID所屬的類別查詢?或者有關如何解決多個查詢的任何建議。

    回答

    2

    你想使用一個內連接,因此返回匹配基礎上,記錄加入標準。

    SELECT Images.CategoryID, Category.Category 
    FROM IMAGES 
    INNER JOIN Category ON Category.CategoryID = Images.CategoryID 
    WHERE image = exampleimage 
    
    0

    使用一個簡單的左連接:

    SELECT imageID, Image, IMAGE.categoryID, CATEGORIES.Category 
    FROM IMAGES 
    LEFT JOIN CATEGORIES 
    ON IMAGES.categoryID = CATEGORIES.categoryID 
    WHERE image = 'exampleImage' 
    

    使用表的別名,以使語句更短:

    SELECT imageID, Image, i.categoryID, c.Category 
    FROM IMAGES i 
    LEFT JOIN CATEGORIES c 
    ON i.categoryID = c.categoryID 
    WHERE image = 'exampleImage' 
    
    +0

    @knittl雖然左連接將起作用,但他們真的應該避免,如果可以的話。它們比內連接要昂貴得多。從這個問題中,op提到他與類別表有一個外鍵關係,這意味着總會有一個匹配的值。所以他真的應該使用內連接而不是離開。如果有可能沒有匹配的值,但他仍然只想使用左側,但仍然希望看到圖像結果。 – spinon 2010-08-31 16:53:18

    +0

    @knittl非常感謝您的建議:) – slexAtrukov 2010-08-31 17:07:22

    +0

    @spinon:他仍然可以擁有NULL的類別 - 在使用內部聯接時,結果中將省略這些行。它取決於模式,期望的結果等 – knittl 2010-08-31 17:50:25

    相關問題