【问题标题】:Displaying Data From 4 (Four) Tables in Mysql在 Mysql 中显示来自 4(四)个表的数据
【发布时间】:2015-04-01 03:44:45
【问题描述】:

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

这是我的表格:

信息 -> id_info, year, information_name, person_name, country_id, state_id, city_id

国家 -> id、country_id、country_name

-> id, state_id, country_id, state_name

城市 -> 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++;  

        }

    }
    ?>

【问题讨论】:

  • 你的表名是什么?
  • 您需要使用所有字段吗?或者您只需要国家、州和城市名称?
  • @FerrakkemBhuiyan:信息、国家、州、城市
  • @Edper:实际上我需要全部,因为在那个查询中有连接,就像我更新的脚本在上面一样。

标签: php mysql


【解决方案1】:

假设正确使用索引键,您可以使用 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

【讨论】:

  • 嗯,还是一样,它会显示19334条记录,但在数据库中只有5条记录。也许我的脚本做错了,我更新了上面的完整脚本。
  • @Kris - 向我们展示您如何获取数据。更新您的帖子
  • 我刚刚做了 :) 更新了用于在表格中显示数据的完整脚本,并在单独的文件中编辑、删除和查看详细脚本。
【解决方案2】:

尝试更改您的 GROUP BY 并使用 INNER JOIN :

  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

【讨论】:

  • 只显示了两条数据。
【解决方案3】:

它现在工作了,*叹气问题是信息表,我必须先清空表。

我发生了很多事情,记录是问题的根源,我经历了很多。谢谢大家的帮助,现在一切正常了。

上面的两个答案都很好用,谢谢。

【讨论】:

  • 很高兴您找到了解决方案 Kris。快乐的编码和上帝保佑。
猜你喜欢
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
相关资源
最近更新 更多