2011-07-04 121 views
0

我有2个表:问题与Attachement帮助与SQL查询

期表包含10条记录,并具有以下设计

IssueId | IssueName | IssueDate | IssueDescription 

Attachement包含5个记录表有follwing DESIN

IDAttachement | Filename | IssueID 

我想从2个表格共选择10条记录中的所有内容,如下所示如果fiename不存在显示没有文件

IssueID  IssueName  Filename 

1    Issue1   file1 

2    Issue2   Nofile 

3    Issue3   Nofile 

4    Issue4   Nofile 

5    Issue5   Nofile 

6    Issue 6   file6 

7    Issue 7   file 7 

8    Issue 8   file 8 

9    Issue 9   file 9 

10   Issue 10  Nofile 

请帮我显示NOFILE如果有该问题

我需要的SQL SELECT查询没有attachement

回答

1
SELECT i.IssueID,i.IssueName, COALESCE (a.Filename,'Nofile') Filename 
FROM Issue i 
LEFT JOIN Attachement a ON i.IssueID = a.IssueID 
+0

COALESCE返回的第一个非空值,所以在情况下,加入回的空的文件名,“NOFILE”值将返回 – niktrs

0
SELECT IssueID, IssueName, Filename 
     FROM Issues JOIN Attachement ON (Issues.IssueId = Attachement.IssueID); 

如果你要重命名您的ID字段,以便它们都称为IssueId ,您可以做得更好:

SELECT IssueId, IssueName, Filename 
     FROM Issues JOIN Attachement USING(IssueId); 

如果您想要包含根本没有附件记录的问题(r而不是具有空的“文件名”字段的一个),说LEFT OUTER JOIN而不是JOIN

0

LEFT OUTER JOIN是你在找什么。代码是近似的,虽然区分大小写迈尔可能不是一个因素,你的RDBMS

SELECT 
    I.IssueID 
, I.IssueName 
, coalesce(A.FileName, 'NoFile') AS FileName 
FROM 
    ISSUES I 
    LEFT OUTER JOIN 
     Attachement A 
     ON A.IssueID = I.IssueId 
0
select i.IssueID,i.IssueName, 
(case when a.FileName then a.FileName else "NO FILE" end) 
FROM Issue i LEFT JOIN Attachement a ON i.IssueID = a.IssueID