我目前有一个页面显示一个名为“tblplayers”的表格中的玩家信息。我目前使用的查询是:
$result = mysql_query("SELECT * FROM tblPlayers WHERE lng_RecordID_PK = '".$playerid."' ");
我有一个名为“tblMatches”的第二个表,其中包含玩家的匹配结果。我希望记录集包含来自“tblMatches”的行WHERE“P1_ID”或“P2_ID”等于“tblPlayers”中的“lng_RecordID_PK”字段。
如何修改$ result查询以便返回:
???
感谢您帮助我。
答案 0 :(得分:5)
这称为'加入':
SELECT tblPlayers.*, tblMatches.*
FROM tblPlayers
LEFT JOIN tblMatches ON Ing_RecordID_PK IN (P1_ID, P2_ID)
答案 1 :(得分:3)
您要求加入两个表,其中第二个表可能在第一个表中为每个表创建多个记录。这是一对多或1:N连接,大多数情况下使用LEFT JOIN
表示您想要“左”表中的所有内容,以及与“右”表匹配的所有记录,以及您可能在“左侧”有一些没有匹配的记录。
您的查询将如下所示:
SELECT *
FROM tblPlayers
LEFT JOIN tblMatches
ON (tblPlayers.lng_RecordID_PK = tblMatches.P1_ID
OR tblPlayers.lng_RecordID_PK = tblMatches.P2_ID)
WHERE tblPlayers.lng_RecordID_PK = @PlayerID;
建议点:
答案 2 :(得分:0)
无法以您描述的方式从两个不同的表中获取行。您无法从一个表中获取一行,而从另一个表中获取两行。您可以做两个单独的查询,或使用JOIN语句将两个表连接在一起,然后从结果联接表中接收结果。如果您提供有关表结构的更多信息,我相信可以提供更多帮助。