2013-04-08 161 views
1

我在同一个数据库中有两个表:hlstats_Events_Connects和hlstats_PlayerUniqueIds。用SQL挣扎

在hlstats_Events_Connects中,我有一个我希望获得的值,但是它与我需要从另一个表中的数据获得的ID有关,使用我拥有的“uniqueId”。例如:

**hlstats_Events_Connects** 

playerId  eventTime 
---------------------- 
8   2013-04-05 05:44:14 


**hlstats_PlayerUniqueIds** 

playerId  uniqueId 
--------------------- 
8   0:0:84901 

所以我有“UNIQUEID”作为一个变量,而我想说的是,得到的人UNIQUEID的playerId,那么您可以通过playerId是什么EVENTTIME。目前我有以下几行,但无法弄清Where子句。

SELECT c.eventTime, c.playerId, u.uniqueId, u.playerId 
FROM c.hlstats_Events_Connects, u.hlstats_PlayerUniqueIds 
WHERE ...? 

干杯

+0

如果你想通过UNIQUEID并获得EVENTTIME则:' SELECT c.eventTime,c.player Id,u.uniqueId,u.playerId FROM c.hlstats_Events_Connects,u.hlstats_PlayerUniqueIds WHERE c.playerId = u.playerId and u.uniqueId ='0:0:84901'' – Sachin 2013-04-08 11:36:35

回答

2

看起来你只是缺少JOIN。你将加入表上playerId列:

SELECT c.eventTime, c.playerId, u.uniqueId, u.playerId 
FROM c.hlstats_Events_Connects c 
INNER JOIN u.hlstats_PlayerUniqueIds u 
    ON c.playerId = u.playerId 

注意,我更新为使用ANSI JOIN语法,在这种情况下,INNER JOIN查询。这是标准的SQL语法,而不是表之间的逗号,并在WHERE

1

使用JOIN联接这样

SELECT c.eventTime, c.playerId, u.uniqueId, u.playerId 
FROM c.hlstats_Events_Connects, u.hlstats_PlayerUniqueIds 
WHERE c.playerId = u.playerId 
0

你不需要前缀添加到表名,而不是那些应符合规定表名后,你也可以加入刚刚在playerId列(如果那些大表,我建议增加一个索引的列。)

SELECT 
    c.eventTime, c.playerId, u.uniqueId, u.playerId 
FROM 
    hlstats_Events_Connects c, 
    hlstats_PlayerUniqueIds u 
WHERE 
    u.uniqueId = "0:0:84901" and 
    u.playerId = c.playerId