我对此并不陌生,但会尽我所能解释。目标是拥有一个显示以下内容的MySQL表:

姓名|二手武器|受害者|地图

问题:此信息在同一个数据库下的两个表之间分配。

玩家的“姓名”存储在一个表中,而“谁杀死了谁”的数据则通过“ killerID”存储在另一个表中,我不知道如何将“ killerID”与“姓名”相关联。

通过使用killerID#打印信息,可以使表正常工作,但是我想用此人的名字代替它。请查看随附的两个图像:

Table 01

Table 02

因此,与其将表格显示在网站上,不如:

13 | fire_cracker_blast | 7 | c1m2_streets

我希望它是:

NeoMaxQ-C | fire_cracker_blast | {YNB} Chatyak | c1m2_streets

“ killerID”与另一个表中的“ playerID”相同。从本质上讲,我希望它了解killerID = playerID =从playerID中打印玩家的名字。

是的,我一直在寻找教程并拥有自己的表格,但是由于我不知道语法,我为此感到困惑。我知道表格中的一列必须与另一列“相等” ...但是仍然感到困惑。

编辑显示代码

<?php
// Make a MySQL Connection
mysql_connect("URL", "user", "pw") or     die(mysql_error());
mysql_select_db("DBNAME") or die(mysql_error());
mysql_set_charset("UTF8");
// Get specific data from table
$result = mysql_query("SELECT map,killerID,victimID,weapon
FROM hlstats_Events_Teamkills
LEFT JOIN hlstats_PlayerNames
ON hlstats_Events_Teamkills.killerID=hlstats_PlayerNames.playerID;")
or die(mysql_error());


echo "<table class=\"tablesorter-blackice\">";
echo "<thead>";
echo "<tr><th>Map</th><th>Team Killer</th><th>Victim</th><th>Weapon Used</th></tr>";
echo "</thead>";
echo "<tbody>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
// Print out the contents of each row into a table
echo "<tr><td>";
echo $row['map'];
echo "</td><td>";
echo $row['killerID'];
echo "</td><td>";
echo $row['victimID'];
echo "</td><td>";
echo $row['weapon'];
echo "</td></tr>";
}
echo "</tbody>";
echo "</table>";
?>


好的,我回溯了一下...使用上面的当前代码...您看到的是本页的第二张表:http://chatyak.com/l4d2-mysql.php

我对简单性以及如何实际获取合并的数据仅打印名称而不是ID感到困惑。我试图同时回答这两个问题,但也许我觉得有些愚蠢。

最佳答案

为此,您应该使用多个JOIN,在这种情况下,请使用LEFT JOIN

SELECT KillerNames.name as 'Name', TeamKills.weapon as 'Weapon Used', VictimNames.name as 'Victim', TeamKills.map as 'Map'
FROM hlstats_Events_Teamkills TeamKills
LEFT JOIN hlstats_PlayerNames KillerNames
    ON TeamKills.killerId=KillerNames.playerId;
LEFT JOIN hlstats_PlayerNames VictimNames
    ON TeamKills.victimId=VictimNames.playerId;

10-05 20:08