【问题标题】:Viewing data from 6 tables in MySQL在 MySQL 中查看 6 个表的数据
【发布时间】:2012-09-28 20:27:29
【问题描述】:

我正在尝试制作一个“锦标赛”应用程序,但卡在查看来自 6 个不同表格的数据!

我有 6 个表格可以同时放入数据,但是我不能一起查看!并试图在互联网上搜索几个小时,但我就是无法得到它......

随便。这是一场 4 队锦标赛,有赢、平、输和积分。我为此准备了 6 张桌子:

  • 比赛名称 - 身份证、姓名
  • 团队 - ID、团队1、团队2、团队3、团队4
  • 获胜 - ID、team1w、team2w、team3w、team4w
  • 平局 ID、team1d、team2d、team3d、team4d
  • 松动 - ID、team1l、team2l、team3l、team4l
  • 积分 - ID、team1p、team2p、team3p、team4p

这就是表格中的内容...

这是我的输入,效果很好..

<?php
                if(isset($_POST['submit'])) {
                    $cupname = $_POST['cupname'];
                    $team1 = $_POST['team1'];
                    $team2 = $_POST['team2'];
                    $team3 = $_POST['team3'];
                    $team4 = $_POST['team4'];

                    $zero = "0";

                    $result = mysql_query("INSERT INTO cupname (name) VALUES ('$cupname')");
                    $result = mysql_query("INSERT INTO teams (team1, team2, team3, team4) VALUES ('$team1', '$team2', '$team3', '$team4')");
                    $result = mysql_query("INSERT INTO wins (team1w, team2w, team3w, team4w) VALUES ($zero, $zero, $zero, $zero)");
                    $result = mysql_query("INSERT INTO draws (team1d, team2d, team3d, team4d) VALUES ($zero, $zero, $zero, $zero)");
                    $result = mysql_query("INSERT INTO looses (team1l, team2l, team3l, team4l) VALUES ($zero, $zero, $zero, $zero)");
                    $result = mysql_query("INSERT INTO points (team1p, team2p, team3p, team4p) VALUES ($zero, $zero, $zero, $zero)");
                echo "<h1>Turnering og lag lagt til!</h1>";
                }

                ?>

这是制作“联赛/锦标赛”的开始。所有数据都在表格中。

我从一个教程中获得了这段代码,该教程用于对我的网页进行简单的现场编辑。虽然我可以使用相同的输出代码,但在那个站点上它只是来自单个表的新闻。

我已经阅读了一些关于 UNION、LEFT JOIN、FULL JOIN 等的内容。但我没有明白。

这是我的“输出”代码:

<?php
                $result = mysql_query("SELECT * FROM cupname ORDER BY id DESC");
                $result = mysql_query("SELECT * FROM teams ORDER BY id DESC");
                $result = mysql_query("SELECT * FROM wins ORDER BY id DESC");
                $result = mysql_query("SELECT * FROM draws ORDER BY id DESC");
                $result = mysql_query("SELECT * FROM looses ORDER BY id DESC");
                $result = mysql_query("SELECT * FROM points ORDER BY id DESC");
                    while($row = mysql_fetch_array($result)) {
                        $i=$i + 1;
                        echo "<table>";
                        echo "<tr>";
                        echo $row['name'];
                        echo "</tr>";
                        echo "<tr><td><b>Lag</b></td>
                        <td><b>Seiere</b></td>
                        <td><b>Uavgjort</b></td>
                        <td><b>Tap</b></td>
                        <td><b>Poeng</b></td>
                        </tr><tr><td>";
                        echo $row['team1'];
                        echo "</td><td>";
                        echo $row['team1w']; 
                        echo "</td><td>"; 
                        echo  $row['team1d']; 
                        echo "</td><td>"; 
                        echo  $row['team1l']; 
                        echo "</td><td>"; 
                        echo  $row['team1p']; 
                        echo "</td></tr><tr><td>"; 
                        echo  $row['team2']; 
                        echo  "</td><td>"; 
                        echo  $row['team2w']; 
                        echo "</td><td>"; 
                        echo  $row['team2d']; 
                        echo "</td><td>"; 
                        echo  $row['team2l']; 
                        echo "</td><td>"; 
                        echo  $row['team2p']; 
                        echo "</td></tr><tr><td>"; 
                        echo  $row['team3']; 
                        echo  "</td><td>"; 
                        echo  $row['team3w']; 
                        echo "</td><td>"; 
                        echo  $row['team3d']; 
                        echo "</td><td>"; 
                        echo  $row['team3l']; 
                        echo "</td><td>";
                        echo  $row['team3p']; 
                        echo "</td></tr><tr><td>"; 
                        echo  $row['team4']; 
                        echo  "</td><td>"; 
                        echo  $row['team4w']; 
                        echo "</td><td>"; 
                        echo  $row['team4d']; 
                        echo "</td><td>"; 
                        echo  $row['team4l']; 
                        echo "</td><td>"; 
                        echo  $row['team1p']; 
                        echo "</td></tr></table><br /><hr /><br />";
                    }
                ?>

谁知道我该做什么,不做什么?

感谢您的任何回答!

编辑: 我只是得到一个空表的输出! 仅输出点,即 0。

【问题讨论】:

  • 您真的应该学习如何在单个查询中连接表。我写了一个相当长的question and answer 来帮助解决这个确切的问题——我认为你真的会从阅读中受益。
  • 这不仅仅是 真棒 @Fluffeh!我现在就喜欢它,以提供指向它的链接,并将其进一步提供给“有需要”的其他人。
  • 除此之外,从头开始重新设计数据库。设计有缺陷。例如见en.wikipedia.org/wiki/Database_normalization。如果你想将锦标赛扩大到 8 名玩家,你会怎么做?有 1000 万玩家吗?我知道不会发生,但这是为了说明问题。
  • @Havelock 是的,这就是我写这篇文章的重点——我遇到了太多 这个连接查询有什么问题 类型的问题,我提供了几行查询,但想给出深入的解释,并提供一些我在此过程中学到的技巧和窍门。我已经在它上面放了一个赏金来装饰更多的答案,我想我将来会再次这样做:)
  • 再一次,这太棒了@Fluffeh!但有时我觉得这些问题中的大部分都出现了,因为糟糕的数据库设计:-(这里的问答不足以解释这一切:-/

标签: php html mysql css web


【解决方案1】:

您需要加入表格。从您的问题来看,您似乎已经对表的关系部分进行了排序(尽管我不完全确定我是否完全遵循它),所以这实际上是一个使用什么连接的问题:

Inner Joins - 这将只返回所有表中数据匹配的记录:

select
    tourn.id,
    tourn.name
from
    tournament
        join teams team
            on tourn.id=team.id
        join wins win
            on tourn.id=win.id

依此类推(我假设锦标赛 ID 是其他相关的列)

现在,您可以将其更改为外连接,这将返回您的第一个表中的行,无论其他表中是否有匹配的行:

select
    tourn.id,
    tourn.name
from
    tournament
        right outer join teams team
            on tourn.id=team.id
        right outer join wins win
            on tourn.id=win.id

我不完全确定我可以在这个答案中以任何方式更好地解释这个答案,尽管我在之前写的Q&A 中解释过它。这个答案有意义吗?

【讨论】:

  • 嗯,我要试试。但我可以尝试更好地解释!所有 ID 都匹配一场比赛。就像ID是1个客栈一样,一切都是这样的; Champions League (cupname), FC Barcelona (0Win0Draw0Lose0Points), Man U (0W0D0L0P), Man C (0W0D0L0P), Rosenborg BK (0W0D0L0P)... 所以所有的名字都是 ID=1,所有的 0 都是 ID=1,所以在我可以更新 ID=1 上的胜利、平局、失败和积分之后。我也需要在一个 中输出所有数据。并查看它。这有什么意义吗?
  • @Fluffeh 你认为数据库的结构格式正确吗?
  • 我现在把所有东西都放在一张桌子上。所以我现在就去试试!但感谢大家的帮助:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 2019-06-04
  • 2011-07-09
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多