如何将子主题分组到此 MySQL 语句中的主题中?
How can I group subtopics into topics in this MySQL statement?
我已经尝试对下面的数据进行 GROUP BY,但它只返回一个子主题。我怎样才能 return 所有子主题并将它们组织在每个主题下而不 topic_name 出现在每个子 topic_name.
中
编辑: 包括页面截图,这里是使用的PHP:
<ul class="topics-list">
<?php
foreach ($data as $key){
foreach ($key as $item){
$topic_name = $item['topic_name'];
$subtopic_name = ucwords($item['subtopic_name']);
?>
<div class="the_topic">
<h2 class="topic_change"><?php echo $topic_name; ?></h2>
<ul><li class="subtopic_name"><a href="#" data-toggle="modal" data-target="#lvlModal"><h3><?php echo $subtopic_name; ?></h3></a></li></ul>
<hr />
</div>
<?php } ?>
<?php } ?>
</ul>
您可以使用 GROUP_CONCAT()
将所有子主题连接成每个主题一个字符串,然后在您的应用程序代码中解析该字符串。
SELECT topic_name, GROUP_CONCAT(subtopic_name DELIMITER '§§§') as subtopic_names
FROM questions2
GROUP BY topic_name
但我不建议这样做,因为如果子主题包含您的分隔符,您会遇到麻烦。我只想使用您的第二个查询并将结果分组到应用程序代码中。
PHP 代码看起来像这样:
// group the data
$groupedData = array();
foreach ($data as $item) {
$topic_name = $item['topic_name'];
$subtopic_name = ucwords($item['subtopic_name']);
$groupedData[$topic_name][] = $subtopic_name;
}
// grouped output
foreach ($groupedData as $topic_name => $subtopic_names) {
echo '<div class="the_topic">';
echo '<h2 class="topic_change">' . $topic_name . '</h2><ul>';
foreach ($subtopic_names as $subtopic_name) {
echo '<li class="subtopic_name"><a href="#" data-toggle="modal" data-target="#lvlModal"><h3>';
echo $subtopic_name;
echo '</h3></a></li>';
}
echo '</ul><hr /></div>';
}
我已经尝试对下面的数据进行 GROUP BY,但它只返回一个子主题。我怎样才能 return 所有子主题并将它们组织在每个主题下而不 topic_name 出现在每个子 topic_name.
中编辑: 包括页面截图,这里是使用的PHP:
<ul class="topics-list">
<?php
foreach ($data as $key){
foreach ($key as $item){
$topic_name = $item['topic_name'];
$subtopic_name = ucwords($item['subtopic_name']);
?>
<div class="the_topic">
<h2 class="topic_change"><?php echo $topic_name; ?></h2>
<ul><li class="subtopic_name"><a href="#" data-toggle="modal" data-target="#lvlModal"><h3><?php echo $subtopic_name; ?></h3></a></li></ul>
<hr />
</div>
<?php } ?>
<?php } ?>
</ul>
您可以使用 GROUP_CONCAT()
将所有子主题连接成每个主题一个字符串,然后在您的应用程序代码中解析该字符串。
SELECT topic_name, GROUP_CONCAT(subtopic_name DELIMITER '§§§') as subtopic_names
FROM questions2
GROUP BY topic_name
但我不建议这样做,因为如果子主题包含您的分隔符,您会遇到麻烦。我只想使用您的第二个查询并将结果分组到应用程序代码中。
PHP 代码看起来像这样:
// group the data
$groupedData = array();
foreach ($data as $item) {
$topic_name = $item['topic_name'];
$subtopic_name = ucwords($item['subtopic_name']);
$groupedData[$topic_name][] = $subtopic_name;
}
// grouped output
foreach ($groupedData as $topic_name => $subtopic_names) {
echo '<div class="the_topic">';
echo '<h2 class="topic_change">' . $topic_name . '</h2><ul>';
foreach ($subtopic_names as $subtopic_name) {
echo '<li class="subtopic_name"><a href="#" data-toggle="modal" data-target="#lvlModal"><h3>';
echo $subtopic_name;
echo '</h3></a></li>';
}
echo '</ul><hr /></div>';
}