簡體   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