苦苦挣扎的SQL

时间:2013-04-08 11:31:21

标签: php sql

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

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

**hlstats_Events_Connects**

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


**hlstats_PlayerUniqueIds**

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

所以我将“uniqueId”作为变量,我想说,获取personId的playerId,然后从playerId获取eventTime。目前我有类似下面的内容,但无法弄清楚Where子句。

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

干杯

3 个答案:

答案 0 :(得分: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 :(得分:1)

像这样使用JOIN

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

答案 2 :(得分: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
相关问题