次のことを行う SQL クエリに問題があります。
製品テーブルからすべての製品を選択する必要があり、製品ごとに画像テーブルからメイン画像 (すべての列) を結合する必要があります。製品画像テーブルには、画像と製品の関係と列 sortWeight が含まれています。メインの画像は、sortWeight が最小の画像です。
メインの製品画像を取得するには、次のようにします。
SELECT * FROM images WHERE product=SOME_PRODUCT ORDER BY sortWeight ASC LIMIT 1;
すべての製品を取得するには:
SELECT * FROM products;
今、私は何とかこれら2つに参加する必要がありますが、問題は、次の制限を回避する方法がわからないことです:
SELECT P.* FROM products AS P
LEFT JOIN
(SELECT * FROM images AS I WHERE I.product=P.id ORDER BY sortWeight ASC LIMIT 1) AS I1
問題は、MySQL がサブクエリ内の P.id を認識していないことです。私も次のように試しました:
SELECT P.* FROM products AS P
LEFT JOIN
(SELECT * FROM images AS I WHERE ORDER BY sortWeight ASC LIMIT 1) AS I1 ON (I1.product = P.id)
しかし、サブクエリには制限があり、sortWeightが小さい別の製品から画像を選択する可能性があるため、これは正確な結果をもたらすとは思いません。
誰かがこれを書き直すのを手伝ってくれますか? ありがとうございました。