我有点卡住while
循环,需要一些帮助来找到错误的代码。嵌套while循环不能用于我的GROUP BY查询
我的SQL表看起来是这样的:
make model model_body variant
M1 A ooo Va1
M1 B sss Va2
M1 B sss Va3
M1 A ooo Va4
M1 A ooo Va5
M1 B jjj Va6
M1 A www Va7
我想输出HTML表的内容首先通过做GROUP BY
为model_body
值而仅列出独特的人与一个循环,然后用第二循环列出每个uqniue的所有可用variant
值model_body
。
The output should look something like this: However what I end up with is this:
ooo Va1 ooo Va1
Va4 Va4
Va5 Va5
www Va7 www
sss Va2 sss
Va3
jjj Va6 jjj
的PHP代码我写的是这个,我尝试了几种不同的可能性,但总是与某种不匹配的结束:
<?php while (!$rs_main_model->EOF) { ?>
<div>
<div>
<h2<?php echo $rs_main_model->fields['model']; ?></h2>
</div>
<div>
<?php while (!$rs_variant->EOF) { ?>
<?php echo $rs_variant->fields['variant']; ?>
<?php $rs_variant->MoveNext(); } ?>
</div>
</div>
<?php $rs_main_model->MoveNext(); } ?>
可以说是很重要的,如果我把一些文字来代替第二个循环的文本出现在每个model_body
之间,但循环完成时variant
值仅出现在第一个model_body
,其余为空。
我的SQL查询,如下所列:
$catalogue_make = $_GET['m'];
$sql_all_models = "SELECT * FROM tbl_catalog WHERE make = '$catalogue_make'";
$rs_all_models = $db -> Execute($sql_all_models);
$sql_main_model = "SELECT * FROM tbl_catalog
WHERE make = '".$rs_all_models->fields['make']."'
GROUP BY model_body";
$rs_main_model = $db -> Execute($sql_main_model);
$sql_variant = "SELECT * FROM tbl_catalog
WHERE model_body = '".$rs_main_model->fields['model_body']."'";
$rs_variant = $db -> Execute($sql_variant);
这里是GROUP BY
查询的SQL小提琴,如果这服务器的任何东西: http://sqlfiddle.com/#!2/96044/3
我不知道这应该与第二实现所以任何建议如何使这项工作将不胜感激。
编辑 这将引发对这个问题的一些光,但仍无法得到它在我的代码工作: http://board.phpbuilder.com/showthread.php?10373392-RESOLVED-Nested-While-Loops-and-mySQL 谢谢!
如果只想显示model_body,只需在php中使用简单的if语句来检查前一行,并且如果找到匹配项,则不会回显结果。 – boomoto 2014-10-02 16:25:08
好吧,我需要得到所有列+一些没有在例子中列出,并与'variant'一起回显它们。我将这个例子简化到了最基本的结构。 – BradG 2014-10-02 16:29:47
仍然可以完成与sql复制和粘贴你的数据结构到小提琴,我可以看看 – boomoto 2014-10-02 16:33:00