繁体   English   中英

如何为两个相关表创建MYSQL记录源

[英]How to create MYSQL record source for two related tables

我目前有一个页面显示名为“ tblplayers”的表中的玩家信息。 我当前使用的查询是:

$result = mysql_query("SELECT * FROM tblPlayers WHERE lng_RecordID_PK = '".$playerid."' ");

我还有一个名为“ tblMatches”的表格,其中包含玩家的比赛结果。 我希望记录集包括“ tblMatches”中的行,“ P1_ID”或“ P2_ID”等于“ tblPlayers”中的“ lng_RecordID_PK”字段。

如何修改$ result查询,使其返回:

  • 来自tblPlayers的一行
  • 来自tblMatches的多行

???

谢谢你的协助。

这就是所谓的“加入”:

SELECT tblPlayers.*, tblMatches.*
FROM tblPlayers
LEFT JOIN tblMatches ON Ing_RecordID_PK IN (P1_ID, P2_ID)

您正在询问如何联接两个表,其中第二个表可能在第一个表中每个表都有多个记录。 这是一对多或1:N的LEFT JOIN ,并且通常使用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;

一点建议:

  • 避免选择所有列(*),而只选择查询所需的列。
  • 考虑使用参数化查询来避免SQL注入攻击。 如果要恶意提交或更改您的变量,则可能导致数据或安全性受损。 (例如,请参阅PHP数据对象 。)

无法以您描述的方式从两个不同的表中获取行。 您无法从一个表中获得一行,而从另一张表中获得两行。 您可以执行两个单独的查询,或者使用JOIN语句将两个表连接在一起,然后从生成的连接表中接收结果。 如果您提供有关表结构的更多信息,我相信可以提供更多帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM