如何从MYSQL查询中正确创建表

时间:2015-10-06 17:20:03

标签: php mysql

我有一个名为" schedule"的mysql表。对于NFL赛程,其中有一个gameid,homeid,awayid,weekno和seasonno。对于每个团队的BYE周,在offid中有一个0,他们的id在homeid中。

注意:所有再见周都发生在第4周和第11周之间。

所以我想简单地让团队的城市和BYE周参加一个MYSQL查询,加入我的"团队" table(teamid,location)所以我可以在表格中显示它。

我试过了......

$sql = "SELECT *,
    h.location AS home,
    a.location AS away,
    h.teamid AS homeid,
    a.teamid AS awayid,
    s.weekno
FROM schedule s
    INNER JOIN teams h ON s.homeid = h.teamid 
    LEFT JOIN teams a ON s.awayid = a.teamid 
WHERE s.seasonno = $currentyear
AND s.awayid=0
ORDER BY weekno ASC";

$schedule= mysqli_query($connection, $sql);
if (!$schedule) {
die("Database query failed: " . mysqli_error($connection));
} else { 
// Placeholder for data
    $data = array();
    $number=1;
    // Loop through results
    $i=4;
    while($row = mysqli_fetch_assoc($schedule)) {

            while($row['weekno']==$i) {
            ${'tabledata'.$i}.=$row['home'];

            }
            $i++;

    }
}

但是我每个星期都会得到FIRST团队,而不是所有团队。例如,第4周应该是田纳西州和新英格兰。

4   Tennessee
5   Miami
6   Tampa Bay
7   Chicago
8   Jacksonville
9   Houston
10  San Francisco
11  Cleveland

这是显示代码......

<table>
<tr><th>Week #</th><th>Teams</th></tr>
<tr><td>4</td><td><?php echo $tabledata4;?></td><tr>
<tr><td>5</td><td><?php echo $tabledata5;?></td><tr>
<tr><td>6</td><td><?php echo $tabledata6;?></td><tr>
<tr><td>7</td><td><?php echo $tabledata7;?></td><tr>
<tr><td>8</td><td><?php echo $tabledata8;?></td><tr>
<tr><td>9</td><td><?php echo $tabledata9;?></td><tr>
<tr><td>10</td><td><?php echo $tabledata10;?></td><tr>
<tr><td>11</td><td><?php echo $tabledata11;?></td><tr>
</table>

对于应该简单的查询/显示来说,它看起来已经过于复杂了。例如,我甚至不确定我是否需要进行INNER JOIN但是太过困惑而无法确定。

有人可以让我走上正确的道路,避免进一步的卷积吗?

1 个答案:

答案 0 :(得分:1)

你的内部while循环正在创造我认为的问题。 (这实际上是一个奇迹,它显示任何东西)

while($row['weekno']==$i) {
    ${'tabledata'.$i}.=$row['home'];
}
$i++;

将其更改为

$i = $row['weekno'] 
${'tabledata'.$i}.=$row['home'];

它应该有效。