所以我一直在寻找这个问题的答案,但我似乎找不到一个,所以如果有一个我很抱歉重复的帖子。
我遇到的问题是这个
我有一个表格,用于引用不同表格中的多个项目。设置就像这样
这是主参考表(包含所有要引用的项目的参考表)
ID:key
itemID:item refrenced
然后我有其他表格,如
Speakers
Sessions
Sponsors
这些表是refrence表所指向的。我想要回来的是一个简单的子集,这意味着refrence表'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中的视图执行此操作时,它不返回任何结果,我猜测连接是不正确的,我承认我对连接不是很好..
无论如何,我希望这有点有道理,你能提供给我的任何信息都将不胜感激。
谢谢!
答案 0 :(得分:0)
您可以使用union子句创建视图(假设itemId在所有表中都是唯一的)
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 = ?
答案 1 :(得分:0)
使用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