2015-08-24 25 views
0

我有两个表。一个是新闻,第二个是图片。每个新闻都可以有0-3张图片(表格新闻中的image_1,image_2,image_3 - 它的id)。现在iam试图从图像表中获取所有行,但它只给我一个。Mysql两个表之间的多重连接

就像那个(但不工作)

select news.id as nid, image_1, image_2, image_3, photos.id as pid, big, small 
from news 
left join photos 
on image_1=photos.id, image_2=photos.id, image_3=photos.id 
order by nid desc 

回答

0

你有不同的别名加入photos表3倍。

但是你实际上应该改变你的餐桌设计。添加一个名为news_photos

news_photos table 
----------------- 
news_id 
photo_id 

然后你可以从news表中删除image列另一个表。

变更后,你可以用的所有照片,这样的

select n.*, p.name 
from news 
left join news_photos np on n.id = np.news_id 
left join photos p on p.id = np.photo_id 
where n.id = 1234 
+0

伟大的一点。我会尝试并让你知道。现在感谢。 – Jessie

+0

它的工作。谢谢。 – Jessie

1

即使@juergen曾建议更好的选择,也引导你如何解决你的问题在你的方式,但如果你还是老样子所面临的问题,选择新闻如何做,然后你可以按照下面的查询 -

SELECT p.id AS pid, n1.image_1, n2.image_2, n3.image_3, big, small 
FROM photos AS p 
LEFT JOIN news AS n1 ON n1.image_1=p.id 
LEFT JOIN news AS n2 ON n2.image_2=p.id 
LEFT JOIN news AS n3 ON n1.image_3=p.id 
ORDER BY n.id DESC; 
+0

是的,我做了这样的事情。谢谢。 – Jessie