假设我有一个表产品,我有3-4个其他表(评论、图片、订单等)连接到具有一对多关系的产品。
如何简单地从其他表(注释、图片、订单)中选择一个产品及其连接条目?
我试着使用左联接连接其他表,但是我得到了重复的条目。如果我想选择许多产品而不是一个,这也会变得更糟。
我还在考虑对每个相关表进行一个查询,但这不是太慢了吗?
发布于 2014-01-10 09:40:47
如果我正确地理解了你,你就会得到一个产品4的评论,比如10张图片和5个订单,如果你做了一个左连接,你就会得到很多重复的评论,图片和订单的4*10*5=200结果。但是您只需要每条评论、图片和顺序一行。
您将需要对每个相关表进行单独的查询。如果有办法解决这个问题,它将比单独的解决方案更加复杂和缓慢。
发布于 2014-01-10 09:41:27
您没有得到重复的行,而是得到了执行1到多个联接的正确结果。
阅读:operators http://dev.mysql.com/doc/refman/5.0/en/join.html
如果您希望每个产品条目有一行,请考虑使用聚合函数。
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
select product.id, product.name, group_concat(comment.text), avg(rating.value)
from product
left join comment on comment.product_id=product.id
left join rating on rating.product_id=product.id
group by product.id, product.namehttps://stackoverflow.com/questions/21040547
复制相似问题