我有一个连接多个表的查询。
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到多个音频和视频条目。例如,如果文件不包含任何音频数据,则“音频”表中不会生成任何条目。因此,此连接不适用于检索没有音频/视频条目的文件。
解决此问题的一种方法是在视频文件没有音频/视频数据的表格中创建空白记录。但是,我不希望表中有空白记录。
有没有更好的方法来加入表格?
由于
答案 0 :(得分:2)
查看Left outer Join。始终显示左侧(在本例中为file_properties
)表的值,即使它们右侧没有相应的记录(在本例中为audio
和video
)表。