Я хочу получить значения из двух разных таблиц. моя проблема в том, что таблицы не связаны друг с другом, кроме "team_id"

У меня есть таблица player и player_stat.

Мой результат должен выглядеть так:

Имя игрока (из таблицы "player")
Очков: 8, передач: 2, фолов: 0 (из таблицы player_stat)

Имя игрока 2 (из таблицы "player")
Очков: 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  }
?>

Мои столы

Player: id team_id имя создано

Player_stat: id team_id очков, созданных голевых фолов

1
paul 27 Фев 2015 в 11:20

2 ответа

Лучший ответ

Ваш 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

Или вы можете добавить другие присоединения, чтобы получить информацию о вашей команде и так далее.

3
Raphael Müller 27 Фев 2015 в 08:44

Измените свой оператор select, чтобы он читался:

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

Вышеизложенное основано на вашем заявлении о том, что у них есть общий идентификатор команды. Если это не то, чего вы пытаетесь достичь, уточните свой вопрос и опубликуйте схему базы данных.

3
phpPhil 27 Фев 2015 в 08:24