如何在 html table 中填充 UNION ALL 查询数据
How to populate UNION ALL query data in html table
如何在 html table 中填充数据,同时 header 和 PHP 都获取了数据,而 MYSQL.I 没有得到输出显示,因为我想得到,就像在想要的输出图像中一样。
$query = $db->prepare("SELECT player, score FROM cricket_table WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
UNION ALL
SELECT player, score FROM football_table WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'");
$query->execute;
echo '<table><tr><th>Player Name</th><th>Cricket</th><th>Football</th></tr>';
while($row = $query->fetch(PDO:: FETCH_ASSOC) ) {
echo '<tr>
<td>'.$row['player'].'</td>
<td>'.$row['score'].'</td>
</tr>';
}
echo '</table>';
这是想要的output
这是当前输出
SELECT c.player, c.score AS cr_score, f.score AS fb_score FROM cricket_table c
INNER JOIN football_table f ON f.player=c.player AND (f.dateby BETWEEN '2020-01-01' AND '2020-03-01')
WHERE c.dateby BETWEEN '2020-01-01' AND '2020-03-01'
现在尝试输出 table,
while($row = $query->fetch(PDO:: FETCH_ASSOC) ) {
echo '<tr>
<td>'.$row['player'].'</td>
<td>'.$row['cr_score'].'</td>
<td>'.$row['fb_score'].'</td>
</tr>';
}
无法对其进行测试,但您了解了总体思路,应该可以工作
您可以使用 UNION ALL 并对每列所需的值求和:
这是你的SQL。请注意,它将 运行 都使用 union all 进行查询,然后对每个值求和。我们将使用“0”(零)技巧来忽略 "wrong" table:
SELECT x.player, SUM(x.cricket_score) as cricket_score, SUM(x.football_score) as football_score FROM (
SELECT player, SUM(score) as cricket_score, 0 as football_score
FROM cricket_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
GROUP BY player
UNION ALL
SELECT player, 0 as cricket_score, SUM(score) as football_score
FROM football_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
GROUP BY player
) x
GROUP BY x.player
并应用于代码:
$query = $db->prepare(" SELECT x.player, SUM(x.cricket_score) as cricket_score, SUM(x.football_score) as football_score FROM (
SELECT player, SUM(score) as cricket_score, 0 as football_score
FROM cricket_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
GROUP BY player
UNION ALL
SELECT player, 0 as cricket_score, SUM(score) as football_score
FROM football_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
GROUP BY player
) x
GROUP BY x.player");
$query->execute();
echo '<table><tr><th>Player Name</th><th>Cricket</th><th>Football</th></tr>';
while($row = $query->fetch(PDO:: FETCH_ASSOC) ) {
echo '<tr>
<td>'.$row['player'].'</td>
<td>'.$row['cricket_score'].'</td>
<td>'.$row['football_score'].'</td>
</tr>';
}
echo '</table>';
有了这个 SQL 您将获得板球或足球已经设置的值。
如何在 html table 中填充数据,同时 header 和 PHP 都获取了数据,而 MYSQL.I 没有得到输出显示,因为我想得到,就像在想要的输出图像中一样。
$query = $db->prepare("SELECT player, score FROM cricket_table WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
UNION ALL
SELECT player, score FROM football_table WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'");
$query->execute;
echo '<table><tr><th>Player Name</th><th>Cricket</th><th>Football</th></tr>';
while($row = $query->fetch(PDO:: FETCH_ASSOC) ) {
echo '<tr>
<td>'.$row['player'].'</td>
<td>'.$row['score'].'</td>
</tr>';
}
echo '</table>';
这是想要的output
这是当前输出
SELECT c.player, c.score AS cr_score, f.score AS fb_score FROM cricket_table c
INNER JOIN football_table f ON f.player=c.player AND (f.dateby BETWEEN '2020-01-01' AND '2020-03-01')
WHERE c.dateby BETWEEN '2020-01-01' AND '2020-03-01'
现在尝试输出 table,
while($row = $query->fetch(PDO:: FETCH_ASSOC) ) {
echo '<tr>
<td>'.$row['player'].'</td>
<td>'.$row['cr_score'].'</td>
<td>'.$row['fb_score'].'</td>
</tr>';
}
无法对其进行测试,但您了解了总体思路,应该可以工作
您可以使用 UNION ALL 并对每列所需的值求和:
这是你的SQL。请注意,它将 运行 都使用 union all 进行查询,然后对每个值求和。我们将使用“0”(零)技巧来忽略 "wrong" table:
SELECT x.player, SUM(x.cricket_score) as cricket_score, SUM(x.football_score) as football_score FROM (
SELECT player, SUM(score) as cricket_score, 0 as football_score
FROM cricket_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
GROUP BY player
UNION ALL
SELECT player, 0 as cricket_score, SUM(score) as football_score
FROM football_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
GROUP BY player
) x
GROUP BY x.player
并应用于代码:
$query = $db->prepare(" SELECT x.player, SUM(x.cricket_score) as cricket_score, SUM(x.football_score) as football_score FROM (
SELECT player, SUM(score) as cricket_score, 0 as football_score
FROM cricket_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
GROUP BY player
UNION ALL
SELECT player, 0 as cricket_score, SUM(score) as football_score
FROM football_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-01'
GROUP BY player
) x
GROUP BY x.player");
$query->execute();
echo '<table><tr><th>Player Name</th><th>Cricket</th><th>Football</th></tr>';
while($row = $query->fetch(PDO:: FETCH_ASSOC) ) {
echo '<tr>
<td>'.$row['player'].'</td>
<td>'.$row['cricket_score'].'</td>
<td>'.$row['football_score'].'</td>
</tr>';
}
echo '</table>';
有了这个 SQL 您将获得板球或足球已经设置的值。