我有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