我想从两个不同的表中获取值。 我的问题是表与彼此没有关系,只有“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 点 助攻 犯规 创建
答案 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
或者您可以添加其他联接,以便获取团队详细信息等。