0

好吧,让我解释一下我的问题:

我得到了这些表:

产品

  • product_id
  • 产品名称

照片

  • 照片网址
  • product_id

视频

  • 视频网址
  • product_id

我想加入列出产品的所有照片和视频......好吧,我可以用两种方式来做:

第一的:

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;

或执行两个查询,例如:

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 回答