SQL加入问题 - 多个连接中的1个表缺少一个条目

时间:2011-07-12 08:34:54

标签: sql

我有一个连接多个表的查询。

QString str1 = "SELECT DISTINCT f.pk_file_ID, f.file_name" 
" FROM"
" File_Properties f"
", Video v "
", Audio a"
", Transport_Stream ts"
", TS_Data tsd"
", Signal_Root sr"
", Test_Case tc"
" WHERE"
" v.fk_file_ID = f.pk_file_ID"
" AND a.fk_file_ID = f.pk_file_ID" 
" AND ts.fk_file_ID = f.pk_file_ID"
" AND tsd.fk_file_ID = f.pk_file_ID"
" AND sr.fk_file_ID = f.pk_file_ID"
" AND tc.fk_file_ID = f.pk_file_ID" + clause;

我的应用程序使用组合框,允许用户选择用于获取和显示表格中的文件数据的视频文件条件。选定的条件存储在clause变量中,用于检索数据库中的匹配文件。

这里的问题是视频文件可以包含0到多个音频和视频条目。例如,如果文件不包含任何音频数据,则“音频”表中不会生成任何条目。因此,此连接不适用于检索没有音频/视频条目的文件。

解决此问题的一种方法是在视频文件没有音频/视频数据的表格中创建空白记录。但是,我不希望表中有空白记录。

有没有更好的方法来加入表格?

由于

1 个答案:

答案 0 :(得分:2)

查看Left outer Join。始终显示左侧(在本例中为file_properties)表的值,即使它们右侧没有相应的记录(在本例中为audiovideo)表。