0

私の質問を説明しましょう:

これらのテーブルを取得しました:

製品

  • 製品番号
  • 商品名

写真

  • 写真のURL
  • 製品番号

ビデオ

  • video_url
  • 製品番号

そして、製品のすべての写真とビデオをリストするために結合を実行したい...まあ、私はそれを行う2つの方法で考えることができます:

初め:

select b.photo_url,c.video_url from product a left join photo b using(product_id) left join video c using(product_id) where a.product_id=X;

または次のような 2 つのクエリを実行します。

select b.photo_url from product a left join photo b using(product_id) where a.product_id=X;
select c.video_url from product a left join video c using(product_id) where a.product_id=X;

最初のクエリは良く見えますが、この製品の 2 つのビデオと 3 つの写真を取得した場合、問題はありますか? 繰り返しレコードを取得しないように、php で解析する必要があります。とにかく、これらのクエリのどちらが優れているか知りたいです。

4

1 に答える 1

1

共通の製品を除いて、特定のビデオと特定の写真の間に関連性は見られません。あなたが言うには、それぞれが複数ある可能性があります。では、組合を作ってみませんか?

SELECT photo_url FROM photo WHERE product_id=X
UNION
SELECT video_url FROM video WHERE product_id=X;

URL の種類を区別することに関心がある場合は、列を追加します。

SELECT photo_url AS url, 'photo' AS url_type FROM photo WHERE product_id=X
UNION
SELECT video_url AS url, 'video' AS url_type FROM video WHERE product_id=X;
于 2013-03-13T00:21:29.920 に答える