【发布时间】:2014-02-14 05:09:07
【问题描述】:
我试图在一列中显示多个行值。我使用 4 个包含一对多关系的表。我已经用我需要的数据建立了一个查询,我不确定问题是在这里还是实际上在 PHP 端。我已经包含了一些代码,所以你可以得到一个想法。老实说,我可能需要使用 GROUP BY 或在 while 之后包含一个 foreach 循环才能获得我想要的结果。如果有人能指出我正确的方向或指导我找到解决方案,我将不胜感激。
我可以使用 GROUP BY category_name 停止类别重复,但我遇到 subCat_name 没有显示所有结果的问题。只显示第一行。它应该显示主 category_name 下的所有 subCat_name
目前正在获取这个
Ideas (category_name)
Shop More( subCat_name)
Have a better wardrobe(subCat_description)
但应该是这样的
Ideas (category_name)
Shop More( subCat_name)
Have a better wardrobe(subCat_description)
Build a Blog( subCat_name)
Share Ideas(subCat_description)
Travel to NYC( subCat_name)
Book a holiday(subCat_description)
MYSQL 查询
$query = 'SELECT project_users.*, project.project_name, category.category_name, sub_category.subCat_name, sub_category.subCat_description
FROM project_users
JOIN project
ON project.project_id = project_users.project_id
JOIN category
ON category.project_id = project.project_id
JOIN sub_category
ON sub_category.category_id = category.category_id';
PHP
$result = mysqli_query($link, $query);
if($result) {
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo '<!-- category container for tasks-->
<div class="col-lg-4 category">
<section class="panel">
<div class="panel-body">
<header class="to-do-head">';
echo '<h3>' . $row['category_name'] . '</h3>';
echo ' <a class="to-do pull-right"><i class="icon-plus"></i> Add Task</a>';
echo '</header>';
echo '<div class="col-lg-12 task"><!--open task-->';
echo '<div class="panel-body">';
echo '<h4>' . $row['subCat_name'] . '</h4>';
echo '<p>' . $row['subCat_description'] . '</p>';
echo '</div><!--close panel-body-->';
echo '<div class="task-foot">';
echo '<a href=""><i data-original-title="Add Action" class="icon-legal tooltips"></i></a>
<p class="pull-right"><i class="icon-calendar"></i> 16th Jan 2014</p>
</div><!--close task foot-->';
echo '</div><!--close-lg-12 task-->';
echo '</div><!--close panel body-->
</section><!--close panel-->
</div><!--col lg 4 close container for tasks-->';
}//end while
【问题讨论】:
-
我只输出了一个 subCat_name,应该显示另外三个,似乎它没有正确地迭代那个特定的类别。我不确定我的查询是正确的还是它的 PHP。我会尝试放一个屏幕截图,以便您理解
-
所以不是所有应该输出的东西都在输出吗?尝试在 mysql 中运行你的 sql(使用 mysql 工作台或命令行),看看这会给你什么。
-
就个人而言,我会先查看 SQL 语句返回的信息,然后确定我将如何使用它。我一直使用 phpmyadmin 来运行我的查询,以便我知道正在检索哪些数据,然后我使用它来构建我需要构建的内容。
-
如果您在查询方面需要帮助,请制作一个 sqlfiddle。
-
我通过查询获得了我想要的结果,但由于某种原因,当我执行 GROUP BY category_name 时,它没有重复辅助行信息。这是 sqlfiddle sqlfiddle.com/#!2/faae9/4