首页 > 解决方案 > SQL显示表一中的一个条目,然后显示所有对应的条目,不重复?

问题描述

这是我第一次使用 SQL,我使用的是 PHPMyAdmin。我与数据库的连接工作正常。

我有 8 个数据库表,但我目前只是试图显示其中 5 个的数据。这是我的 ER 模型。我想在 RSS 提要中显示城市、地点、照片和猫表。

目前,当加载 XML 时,它会重复一些条目,例如对于每个地方它都会重复城市信息。因此,对于地点 1,它显示所有城市数据,然后是地点数据,地点 2 等也是如此。这是当前输出的前几个条目的样子,由于重复,它是一个很长的 XML 文件。

我希望城市信息显示一次,然后显示相应的地点数据。所以城市 1,然后放置 1,2,3,4,5,6(因为它们对应于城市 1),然后是城市 2,然后放置 7,8,9,10(因为它们对应于城市 2)。

这是我当前的选择查询的样子:

SELECT s.city_id, s.city_name, s.country_name, s.population, 
        s.city_long, s.city_lat, s.woeid, s.currency, s.region, 
        s.time_zone, s.area, s.postal_code, n.place_name,  n.capacity, 
        n.place_long, n.place_lat, n.city_id, c.place_id, c.category_id, 
        ss.category_id, ss.category_name, ss.category_icon, cc.photo_id, 
        cc.place_id, cc.photo_name 
FROM city s 
    JOIN place n ON s.city_id = n.city_id 
    JOIN place_cat c ON c.place_id = n.place_id 
    JOIN cat ss ON ss.category_id = c.category_id
    JOIN photo cc ON cc.place_id = n.place_id

我不知道这是查询问题还是我回显数据的方式问题。这就是我回应它的方式:

 foreach($results as $result) 
{
//
echo '<item>'. PHP_EOL;
echo '<city>'. PHP_EOL;
echo '<CityName>' . $result['city_name'] . '</CityName>'. PHP_EOL;
echo '<CountryName>' . $result['country_name'] . '</CountryName>'. PHP_EOL;
echo '<Population>' . $result['population'] . '</Population>'. PHP_EOL;
echo '<CityLat>' . $result['city_lat'] . '</CityLat>'. PHP_EOL;
echo '<CityLong>' . $result['city_long'] . '</CityLong>'. PHP_EOL;
echo '<Woeid>' . $result['woeid'] . '</Woeid>'. PHP_EOL;
echo '<Currency>' . $result['currency'] . '</Currency>'. PHP_EOL;
echo '<Region>' . $result['region'] . '</Region>'. PHP_EOL;
echo '<TimeZone>' . $result['time_zone'] . '</TimeZone>'. PHP_EOL;
echo '<Area>' . $result['area'] . '</Area>'. PHP_EOL;
echo '<PostalCode>' . $result['postal_code'] . '</PostalCode>'. PHP_EOL;
echo '<place>'. PHP_EOL;
echo '<PlaceName>' . $result['place_name'] . '</PlaceName>'. PHP_EOL;
echo '<Capacity>' . $result['capacity'] . '</Capacity>'. PHP_EOL;
echo '<PlaceLat>' . $result['place_lat'] . '</PlaceLat>'. PHP_EOL;
echo '<PlaceLong>' . $result['place_long'] . '</PlaceLong>'. PHP_EOL;
echo '<Category>' . $result['category_name'] . '</Category>'. PHP_EOL;
echo '<Photo>' . $result['photo_name'] . '</Photo>'. PHP_EOL;
echo '</place>'. PHP_EOL;
echo '</city>'. PHP_EOL;
echo '</item>'. PHP_EOL;

}

有没有办法以我想要的方式显示数据(城市信息显示一次,然后显示相应的地点数据)?如果有怎么办?

标签: phpsqlxmlphpmyadminrss

解决方案


推荐阅读