当前位置: 首页 > 知识库问答 >
问题:

在Mysql中显示来自4(四)个表的数据

庄浩言
2023-03-14

我只需要一个简单的查询,

下面是我的桌子:

Information->id_info,year,information_name,person_name,country_id,state_id,city_id

country->id,country_id,country_name

state->id,state_id,country_id,state_name

city->id,city_id,state_id,city_name

我已经运行了一些查询,例如:

                         SELECT * 
                         FROM information, country, state, city 
                         WHERE information.country_id =country.country_id 
                         AND information.state_id = state.state_id
                         AND information.city_id = city.city_id 
                         GROUP BY information.id_info;

我的简单脚本:

echo '<td>'.$data['country_name'].'</td>

echo '<td>'.$data['state_name'].'</td>

echo '<td>'.$data['city_name'].'</td>

$data-> Is my while script with $query=mysql_query...

从上面的查询中只显示了我的数据库中的两(2)个数据,但在数据库中它有五(5)个数据。

然后我尝试删除Group语句,但数据一直循环,显示了近8000个数据,但我只得到表上的5个数据。

我什么都试过了,左接,右接,内接....

我需要帮助,我知道这相当简单,但我怎么能只是正常显示所有的数据。

多谢了。

下面是我显示数据的完整脚本:

<table cellpadding="5" cellspacing="0" border="1">
    <tr bgcolor="#CCCCCC">
        <th>No.</th>
        <th>Year</th>
        <th>Information Name</th>
        <th>Person Name</th>
        <th>Country</th>
        <th>State</th>
        <th>City</th>
        <th>Act</th>
    </tr>

    <?php
    include('connect.php');

    $query = mysql_query("SELECT *
                  FROM information
                  INNER JOIN country ON information.country_id =country.country_id
                  INNER JOIN state ON information.state_id = state.state_id
                                  INNER JOIN city ON information.city_id = city.city_id
                                  GROUP BY information.country_id, information.state_id, information.city_id") or die(mysql_error());


    if(mysql_num_rows($query) == 0){


        echo '<tr><td colspan="6">No data!</td></tr>';

    }else{  


        $no = 1;    
        while($data = mysql_fetch_assoc($query)){   

            echo '<tr>';
                echo '<td>'.$no.'</td>';    
                echo '<td>'.$data['year'].'</td>';  
                echo '<td>'.$data['information_name'].'</td>';  
                echo '<td>'.$data['person_name'].'</td>';   
                echo '<td>'.$data['country_name'].'</td>';  
                echo '<td>'.$data['state_name'].'</td>';    
                echo '<td>'.$data['city_name'].'</td>'; 
                echo '<td><a href="viewinfo.php?id='.$data['id_info'].'">Detail</a> / <a href="edit.php?id='.$data['id_info'].'">Edit</a> / <a href="delete.php?id='.$data['id_info'].'" onclick="return confirm(\'Are You Sure?\')">Delete</a></td>';  
            echo '</tr>';

            $no++;  

        }

    }
    ?>

共有2个答案

姬阳曜
2023-03-14

您可以使用INNER JOIN,前提是索引键使用正确:

SELECT country.country_name,
       state.state_name,
       city.city_name
FROM information
INNER JOIN country ON information.country_id = country.country_id
INNER JOIN state ON information.state_id = state.state_id
INNER JOIN city ON information.city_id = city.city_id
郭弘盛
2023-03-14

尝试更改组,并使用内部连接:

  SELECT *
  FROM information
   INNER JOIN country ON information.country_id =country.country_id
   INNER JOIN state ON information.state_id = state.state_id
   INNER JOIN city ON information.city_id = city.city_id
   GROUP BY information.country_id, information.state_id, information.city_id
 类似资料:
  • 此时此刻,我不太确定如何处理这个问题。我还打算尝试使用外键。如有任何帮助,不胜感激。

  • 我想在JTable中显示MySQL中的数据,但只显示了表中的最后一行。请帮帮我。我知道我有一个问题,因为jt=newjtable(数据,列)每次都为每行创建一个新表(删除之前的),但我找不到正确的选项。

  • 问题内容: 很难说出这里的要求。这个问题是模棱两可的,模糊的,不完整的,过于广泛的或修辞性的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 6年前关闭。 我有将图像存储在列中的MySQL数据库。我想在PrimeFaces中展示它们。我该如何实现? 问题答案: 您可以使用来显示存储在中的图像,而不管其来源(数据库,磁盘文件系统,网络等)如何。最简单的例子是: 指

  • 问题内容: 嗨,我的数据库中有一个图像表。这些与细节一起存储为Blob,例如图像类型和名称。 我在显示图像时遇到问题,我得到的只是一个带有红色十字的白框。码: 谢谢 问题答案: 好吧,这是一个简短的答案。 检查您的Blob类型是否至少为MEDIUMBLOB,它能够存储高达16M的数据

  • 问题内容: 我想知道是否有一种方法可以完全在sql中执行此操作: 注意: q1将返回约3万行。 有什么办法可以在直式sql中完成上述操作?要直接从一个表(基本上是原始数据表)中提取数据并插入到另一个表(基本上是已处理数据表)中? 问题答案:

  • 问题内容: 如何从MySQL的多个表中选择COUNT(*)? 如: 编辑: 目标是返回此: 问题答案: 您可以通过使用子查询来实现,每个tableCount一个子查询: