选择连接表包含特定值

时间:2018-05-07 16:59:44

标签: join plsql

让我们想象一下我有以下表格:

Table: Jobs
JobID | Desc
1  |  Desc1
2  |  Desc2
3  |  Desc3

Table: Docs
JobId | DocId | Filename
1     | 1     | File1
1     | 2     | File2 
2     | 3     | File1
3     | 4     | File2

现在,我想从Jobs表中选择desc表格中的File1File2JobId=1,其中Select * from Jobs j inner join Docs d on j.JobId = d.jobId where Filename = 'File1' and Filename='File2' Docs位于此处File1 }。我的SQL语句应该如何?

更新:

我尝试了以下内容:

File2

这是错误的。它不返回任何内容,因为Select * from Jobs j inner join Docs d on j.JobId = d.jobId where Filename = 'File1' or Filename='File2' 中的记录中没有12的记录。

3

这是错误的。它会返回作业Jobs1 | Desc1 Docs,因为它们会填写此条件。

我需要什么:

从表格File1

File2

因为Validate表中包含org.apache.commons.lang3而另一个包含var ref = db.ref("server/saving-data/fireblog");的记录。

2 个答案:

答案 0 :(得分:2)

Select j.JobID , j.Desc
from Jobs j 
inner join Docs d 
   on j.JobId = d.jobId 
where Filename IN  ('File1', 'File2')

GROUP BY j.JobID , j.Desc
HAVING COUNT(DISTINCT FileName)  = 2

仅对那些只有这两个文件的作业使用条件聚合。

Select j.JobID , j.Desc
from Jobs j 
inner join Docs d 
   on j.JobId = d.jobId 

GROUP BY j.JobID , j.Desc
HAVING COUNT( DISTINCT CASE WHEN FileName IN ('File1', 'File2') 
                            THEN FileName 
                       END)  = 2
   AND COUNT(FileName) = 2

答案 1 :(得分:0)

Select * from DOCS inner join jobs on jobs.jobID=docs.jobID ORDER BY filename

PS我对数据库不太满意。