我有3個表,Items
,FileLinks
和Files
,每個項目可以有多個與之相關的文件。選擇SQL查詢
項目具有項目ID和ITEMNAME。
FileLinks是含有項ID和寫到FileID項目和文件之間的鏈接表。
文件有寫到FileID,FileURL和FileCategory。
我想一個查詢,列出了所有項目(無重複),並在URL字段空白指定類別的單個文件的URL,如果沒有這一類的文件。
我開始用這樣的:
select items.itemid, items.itemname, files.url
from items
inner join filelinks on items.itemid = filelinks.itemid
inner join files on filelinks.fileid = files.fileid
where files.filecategory = 1
但是,這隻能說明有類別的文件的項目與隱藏那些不和複製,如果有每個項目的多個文件中的項目列表。我需要所有項目,並且只有在該類別或空白的單個文件。
樣本數據:
items
ItemID ItemName
1 apple
2 orange
filelinks
itemid fileid
1 1
1 2
2 3
2 4
files
fileid category url
1 main apple.jpg
2 secondary apple2.jpg
3 main orange.jpg
4 secondary orange2.jpg
if category = main, then results should be
itemid itemname url
1 apple apple.jpg
2 orange orange.jpg
SQL Server 2014,tag added –
提供樣品數據和預期結果。 –
嘗試使用LEFT JOIN,而不是內部聯接。 – jarlh