我对此并不陌生,但会尽我所能解释。目标是拥有一个显示以下内容的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;