簡體   English   中英

MySQL在兩個表之間的多重連接

[英]Mysql multiple join between two tables

我有兩張桌子。 一種是新聞,另一種是圖像。 每個新聞可以包含0-3張圖片(表格新聞中的image_1,image_2,image_3-其ID)。 現在我試圖從圖像表中獲取所有行,但它只給我回來。

這樣(但不起作用)

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

甚至@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;

您必須使用不同的別名加入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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM