我已经看到了这样的几个问题和这个变化,但我仍然困惑如何去做这件事。我在不同地区拥有不同的经销商,并希望按地区列出一个长列表。循环父母记录其次是孩子,父母和孩子等
西海岸
经销商1
经销商2
经销商3
东海岸
经销商1
经销商2
经销商3
等等...
我有一个数据库表的地区列表和另一个表与经销商列表。
经销商表有一个列,其中包含来自地区表的地区id,以便我可以加入表格。
我尝试这样做:
$stmt = $link->prepare("SELECT `region_name`, `dealer_name` FROM `dealer_region` as `dr` INNER JOIN `dealers` as `d` ON dr.`id` = d.`region_id` GROUP BY `region_name`");
$stmt->execute();
$result = $stmt->get_result();
$numRows = $result->num_rows;
if($numRows > 0) {
while($row = $result->fetch_assoc()) {
$dealer_name = $row['dealer_name'];
$region_name = $row['region_name'];
echo $region_name . "<br />" . $dealer_name . "<br />";
}
}
$stmt->close();
但是,这不仅导致一个经销商正在各区域而不是所有项下。
使用ORDER BY的问题是它给了我区域名称,一个经销商名称,区域名称,第二个经销商名称等。每个区域只应显示一次,然后显示该区域下面列出的所有经销商 – user8463989
,因为您需要两个循环。一个循环的地区的结果,一个循环经销商的结果。 – Jeffrey
只需在PHP代码中检查该区域发生变化并随后采取行动即可。通过ORDER BY区域内的所有经销商来到彼此之后,当地区发生变化时,可以显示它。比序列化的SQL更高效。 – slaakso