我已經看到了這樣的幾個問題和這個變化,但我仍然困惑如何去做這件事。我在不同地區擁有不同的經銷商,並希望按地區列出一個長列表。循環父母記錄其次是孩子,父母和孩子等
西海岸
經銷商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