SQL视图从多个表中选择单个源

SQL视图从多个表中选择单个源,sql,join,view,Sql,Join,View,所以我一直在到处寻找这个问题的答案,但我似乎找不到答案,所以如果有,我为重复的帖子感到抱歉 我的问题是 我有一个表格,在不同的表格中引用了多个项目。它是这样设置的 这是主参考表,其中包含所有要参考的项目 ID:key itemID:item refrenced 我还有其他的桌子,比如 Speakers Sessions Sponsors 这些表格是参考表格将指向的。我想要得到的是一个简单的子集,这意味着引用表“itemID”字段将映射到其他表的itemID字段 我希望发生的是,找到的任何项都

所以我一直在到处寻找这个问题的答案,但我似乎找不到答案,所以如果有,我为重复的帖子感到抱歉

我的问题是

我有一个表格,在不同的表格中引用了多个项目。它是这样设置的

这是主参考表,其中包含所有要参考的项目

ID:key
itemID:item refrenced
我还有其他的桌子,比如

Speakers
Sessions
Sponsors
这些表格是参考表格将指向的。我想要得到的是一个简单的子集,这意味着引用表“itemID”字段将映射到其他表的itemID字段

我希望发生的是,找到的任何项都将显示在结果中,这意味着它将在所有3个表中查找匹配的itemID并显示数据

比如说

在参考表中,您可能有

ID:1 , itemID: 1111
ID:2 , itemID: 2222
ID:3 , itemID: 3333
ID:4 , itemID: 4444
ID:5 , itemID: 5555
所以我们的参考表中有5个项目,我想在所有三个表中查找itemID的匹配项

Speakers
Sessions
Sponsors
如果有匹配项,它应该从表中返回

itemsID, Title
当我尝试在SQL中从视图执行此操作时,它不会返回任何结果,我猜连接是不正确的,我承认我对连接不是很好

无论如何,我希望这有点道理,你能提供给我的任何信息将不胜感激


谢谢

假设itemId在所有表中都是唯一的,则可以使用union子句创建视图

SELECT ref_table.ID, ref_table.ItemId, speakers.title 
FROM ref_table, speakers
WHERE ref_table.itemId = speakers.ItemId
UNION
SELECT ref_table.ID, ref_table.ItemId, sessions.title 
FROM ref_table, sessions
WHERE ref_table.itemId = sessions.ItemId
...
现在要使用id查询表,需要

SELECT * FROM my_view WHERE id = ?

使用UNION,然后与引用表联接

Select R.itemId, T.title 
From
(
     Select itemid, title ,'speakers' as type
    from speakers
    UNION
    Select itemid, title ,'sessions' as type
    from sessions 
) T
Join refTable R
On R.itemid = T.itemId