结合不同表中的MySQL列

时间:2014-08-04 20:57:30

标签: mysql

我是新手,但我会尽力解释。目标....有一个显示以下内容的MySQL表:

名称|武器使用|受害者|地图

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

"名称"玩家的数据存储在一个表中但是#34;谁杀死了谁"存储在另一个via" killerID"并且我不知道如何关联"杀手ID"到"名称"。

我可以通过使用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。我正在尝试这两种反应,但也许我会搞砸了。

2 个答案:

答案 0 :(得分:1)

您应该为此使用多个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;

答案 1 :(得分:0)

我认为你正在寻找一个普通的老JOIN。在你的情况下,它会是这样的:

select p.name, k.weapon_used, v.name, k.map
from events_teamKills k
join playerNames p on k.killerId = p.id
join playerNames v on k.victimId = v.id

当然,您需要确保使用表格和列的正确名称(为简化起见,我简化了一点)。