更好的方法来做这些MySQL查询?

时间:2013-03-13 00:14:26

标签: mysql sql

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

我得到了这些表格:

产品

  • PRODUCT_ID
  • PRODUCT_NAME

照片

  • PHOTO_URL
  • PRODUCT_ID

视频

  • VIDEO_URL
  • PRODUCT_ID

我希望加入以列出产品的所有照片和视频......我可以用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;

或做两个查询,如:

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解析它不要重复记录;无论如何,我想知道哪些查询更好。

1 个答案:

答案 0 :(得分:1)

除了普通产品之外,我没有看到特定视频和特定照片之间的任何关联。你说的可能有多个。那么为什么不联合呢?

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

如果您担心区分网址类型,请添加一列:

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;