2013-12-09 45 views
1

我有2个表格都包含track_ids和artist_ids。我想要做的就是加入所有的track_ids,看看哪个artist_ids与哪个track对应。我想要的结果是,如果我搜索artist_id,它应该返回两个表的结果,换句话说,我需要加入两个表并搜索artist_id。如果找到artist_id,那么它应该返回特定的曲目。这个结果也应该是独一无二的。加入2个表格并根据where子句提取一列

这里是表如何看待数据

Table1: 
Column names: id [primary key], artist_id, track_id 
Column values: 1, 34, 28 
Column values: 2, 34, 11 
Column values: 3, 34, 33 

Table2: 
Column names: id [primary key], track_id, artist_id, 
Column values: 11, 11, 2 
Column values: 12, 12, 24 
Column values: 13, 13, 2 
的例子

所以上面,如果我找artist_id 34查询要结合2个表,然后搜索artist_id 34和返回track_ids 28,11 33。

回答

1

你可以只需UNION你的两张桌子在一起。根据定义,UNION运算符会返回不同的结果:

SELECT Track_ID 
FROM Table1 
WHERE Artist_ID = 34 
UNION 
SELECT Track_ID 
FROM Table2 
WHERE Artist_ID = 34 
0

在你给我们的例子中,没有必要JOIN这两个表。你只需要执行:

SELECT * 
    FROM Table2 
WHERE artist_id = 34 

,但如果你需要JOIN他们(的情况下,例如,你需要从Table1额外的字段),它是那样简单:

SELECT * 
    FROM Table1 
    JOIN Table2 on Table1.id = Table2.artist_id 
    WHERE Table1.id = 34 
+0

加入的原因是在您的示例中搜索两个表以找到track_id会完成吗? –

+0

'Table2'中是否存在'artist_id'而不是'Table1'? –

+0

它可能存在于table1或table2或两者中 –