2017-02-11 7 views
0

LEFT JOINを使用して4つのテーブルを結合してください。画像テーブルはimg_itemによってアイテムテーブルにリンクされています。したがって、各アイテムはより多くの画像を持つことができます。私はすべてのアイテムの最初のイメージだけを取得したい。どのように私はこれを達成するために行くのですか?左の制限値クエリの結合部分

SELECT * FROM items 
LEFT JOIN category ON items.item_cat = category.cat_id 
LEFT JOIN users ON users.user_id=items.item_user 
LEFT JOIN institutions ON institutions.inst_id=users.user_inst 
LEFT JOIN images ON images.img_item = items.item_id 
ORDER BY item_id DESC 
+1

最初の画像を定義する方法は、最小IDまたは作成日で定義されます。最初の画像を見つける基準は? – scaisEdge

+1

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry

答えて

1

MySQLでは、変数を使用して結果を列挙し、最初のものを選択できます。もう一つの選択肢は、あなたが望むものを特定し、それを選択することです。次の例では、最大のIDを持つ画像を選択します。

SELECT * 
FROM items LEFT JOIN 
    category 
    ON items.item_cat = category.cat_id LEFT JOIN 
    users 
    ON users.user_id=items.item_user LEFT JOIN 
    institutions 
    ON institutions.inst_id = users.user_inst LEFT JOIN 
    images 
    ON images.img_item = items.item_id AND 
     images.img_id = (SELECT MAX(i2.img_id) 
         FROM images i2 
         WHERE i2.img_item = images.img_item 
         ); 
ORDER BY item_id DESC 
+0

あなたのサポートのために皆に感謝@ゴードンは私のために働いた – Optimistic

関連する問題