簡體   English   中英

如何連接兩個表並獲取正確的記錄

[英]How to join two table and get the correct records

我有一個包含頁面/廣告的表格,另一個表格包含每個廣告的x圖片。 圖片表還有一個“sortorder”列。

我正在嘗試編寫一些SQL,我從廣告中獲取標題,只有一張圖片,其中sortorder是最低的。

到目前為止我正在這樣做。 但那只是給了我一張照片,但不是我想要的照片。

SELECT ads.id, ads.title, min(ads_gallery_files.filename) as picture, clients.name
FROM ads LEFT JOIN ads_gallery_files ON ads_gallery_files.ads_id=ads.id 
GROUP BY ads.id

我還有一個客戶表,我可以看到誰創建了廣告。 我正在使用左連接來收集該名稱

LEFT JOIN clients ON clients.id=ads.client_id

也許我必須在SELECT中做一個SELECT,不知道。

您需要一個表格表達式(我將其命名為m )來計算每個廣告的最小sortorder 然后你可以加入這個表來過濾掉你不想要的“額外”行。

例如:

select
   a.id, a.title, f.filename as picture, c.name
from ads a
join ads_gallery_files f on f.ads_id = a.id
join ( -- this is called a "table expression" since it acts as a table
  select ads_id, min(sortorder) as minorder
  from ads_gallery_files f
  group by ads_id
) m on m.ads_id = f.ads_id and m.minorder = f.sortorder
left join clients c on c.id = a.client_id

暫無
暫無

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

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