2012-10-12 56 views
0

我有两个表。一个是所有类别的列表。另一个是事物可能属于的类别列表。一个东西可以属于多个类别(它可能在表中的两个以上的记录)如果在两个表中存在记录,则添加一列

所以,我有

表:

categories 
1, horror 
2, romance 
3, post modern 
4, Canadian 
5, English 

... 
2340 

然后另一个表,thingsToCategories,有两个给定一个thingID列(thingID,的categoryID)

thingID categoryID 
6323-01 1 
6323-01 4 
6323-01 5 
1342-01 2 
1342-01 4 

,我需要所有的类别清单(如SELECT * FROM表A),与TA中是否存在东西ID指示BLE乙

所以,6323-01给予thingID,我需要像这样的列表:

1, horror selected 
2, romance 
3, post modern 
4, Canadian selected 
5, English selected 

我SQL技能是生锈够糟糕,我甚至不能确定什么样的连接使用。任何人都可以提供任何指针?

(我继承了这个数据库,FWIW)

+0

您可以使用视图而不是创建表格来工作 – reggie

回答

0

我认为你正在寻找一个INNER JOIN

SELECT * FROM categories 
INNER JOIN thingsToCategories ON categories.CategoryID = thingsToCategories.CategoryID 
WHERE thingsToCategories.thingID ='6323-01' 

INNER JOIN将确保根据匹配两个表中的记录进行选择。

+0

否则,如果您使用'LEFT JOIN'并在类别上选择,如果thingsToCategories中没有记录,则会显示'NULL' – dgarbacz

+0

我回到整个Categories表*项目出现在表B中的次数 – justin

+0

我还不清楚你想要什么样的最终结果。你只想要类别1,4,5? – dgarbacz

相关问题