私は2つのテーブルを結合して、「写真」テーブルと「場所」テーブルを結合しています。それぞれの場所にはデフォルトの画像が関連付けられている場合とそうでない場合があり、そうであればその写真の名前を返すようにします。そうでない場合はnullを返します。各位置のデフォルト画像(存在する場合)は、常に「PictureSort」の値が1の画像です。2番目のテーブルから正しい値を返すMySQL JOIN
私の最初のSQLの試みから、WHEREステートメントを使用すると、 nullの場所(その場所の写真が存在しない場所)。
SELECT a.LocationID, a.LocationName, b.PictureSort, b.PictureName
FROM Locations AS a
LEFT JOIN Photos AS b ON a.LocationID = b.LocationID
WHERE b.PictureSort = '1'
GROUP BY a.LocationID
私も言ってMySQLでMIN()関数を使用してみましたが、私にPictureSort列で最も低い値を示し、それはその列のために働く一方で、右隣もPictureNameの列には追随しません関連付けられた値をPictureSort列に返します。
SELECT a.LocationID, a.LocationName, MIN(b.PictureSort) AS PictureSort, b.PictureName
FROM Locations AS a
LEFT JOIN Photos AS b ON a.LocationID = b.LocationID
GROUP BY a.LocationID
何か助けていただければ幸いです。私はこれがうまくいくようにしたいと思いますが、これを実現させるために最も安価なクエリも探しています。
ありがとうございます!