这是一个Mysql表格的模型示例:
| ID  |  Country  |  City      |
________________________________
| 1   | Sweden    | Stockholm  |
| 2   | Sweden    | Stockholm  |
| 3   | Sweden    | Lund       |
| 4   | Sweden    | Lund       |
| 5   | Germany   | Berlin     |
| 6   | Germany   | Berlin     |
| 7   | Germany   | Hamburg    |
| 8   | Germany   | Hamburg    |
请注意这两行Country和city其中的重复值如何。
GROUP BY country, city在我的 PDO 查询中使用,在loop. 这是 PDO:
$query = "SELECT id, city, country FROM table GROUP BY country, city";
$stmt = $db->query($query);
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) :
上面的代码将产生这样的输出(中间进行一些编辑)。GROUP BY有效,但country重复:
Sweden - Stockholm
Sweden - Lund
Germany - Berlin
Germany - Hamburg
使用 bootstrap collapse 和上面的代码,我用一个简单的下拉 collopasecountry将与 分开。city这是代码:
<li>
<a data-toggle="collapse" data-target="#<?= $row['id']; ?>" 
href="search.php?country=<?= $row['country']; ?>">
<?= $row['country']; ?>
</a>
<div id ="<?= $row['id']; ?>" class="collapse in"> //collapse div here 
<a href="search.php?city=<?= $row['city']; ?>">
<?= $row['city']; ?><br></a>
</div> //end
</li>   
然后它看起来像这样(一旦开始崩溃):
Sweden 
> Stockholm
Sweden
> Lund
Germany
>Berlin 
Germany
>Hamburg
这是我面临问题的地方。上面列出了值Sweden和Germany2 次。我只想列出一次,以及下面列出的城市,所以想要的外观是这样的Sweden:Germany
Sweden // Lists one time
> Stockholm
> Lund
Germany // Lists one time
>Berlin 
>Hamburg
我已经尝试过 usingDISTINCT, GROUP_CONTACT和其他方法,但都没有得到我想要的输出(上图)。建议?以下是我当前的完整代码:
<?  
$query = "SELECT id, city, country FROM table GROUP BY country, city";
$stmt = $db->query($query);
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) :
?>
<li>
    <a data-toggle="collapse" data-target="#<?= $row['id']; ?>" 
    href="search.php?country=<?= $row['country']; ?>">
    <?= $row['country']; ?>
    </a>
    <div id ="<?= $row['id']; ?>" class="collapse in"> //collapse div here 
    <a href="search.php?city=<?= $row['city']; ?>">
    <?= $row['city']; ?><br></a>
    </div> //end
    </li>       
        <?  endwhile ?>