MySQL循环来自两个不同的表

时间:2015-02-27 08:20:02

标签: php mysql union

我想从两个不同的表中获取值。 我的问题是表与彼此没有关系,只有“team_id”

我有一个“播放器”和一个“player_stat”表。

我的结果应该如下:

玩家名称(来自“玩家”表)
得分:8,助攻:2,犯规:0(来自“player_stat”表)

玩家名称2(来自“玩家”表)
得分:8,助攻:2,犯规:0(来自“player_stat”表)


这是我的尝试:

<?php 
/* PLAYERSTAT */
$attrs = array(PDO::ATTR_PERSISTENT => true);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $conn->prepare("SELECT data.player_stat
    FROM 
    (SELECT * from player_stat
    UNION
    SELECT * from player) data                              
");
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>  
echo $row["playername"]."<br>";
echo $row["points"]." ".$row["assists"];
<?php  }
?>

我的桌子

播放器: ID TEAM_ID 名称 创建

player_stat: ID TEAM_ID 点 助攻 犯规 创建

2 个答案:

答案 0 :(得分:3)

将select语句修改为:

SELECT * FROM player, player_stat WHERE player.team_id = player_stat.team_id

以上内容基于您的声明,即他们有team_id的共同点。如果这不是您要实现的目标,请优化您的问题并发布数据库架构。

答案 1 :(得分:3)

你的SQL查询看起来像这样(假设team_id应该连接统计数据和播放器):

SELECT
 player.playername,
 player_stat.points,
 player_stat.assists,
 player_stat.fouls
FROM
 player
 LEFT JOIN player_stat ON (player.team_id = player_stat.team_id)

但是有点奇怪,你的表之间的唯一关系是team_id。如果输出应该是每个玩家,你必须介绍统计数据和玩家之间的关系。

说,你的玩家可以在一个团队中,应该有一个team_id和一个player_id。然后你的JOIN会读到:

LEFT JOIN player_stats ON (player.player_id = player_stats.player_id)

作为补充,您可以查询您的团队:

WHERE
 player.team_id = 55

或者您可以添加其他联接,以便获取团队详细信息等。