2013-04-08 169 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