Вложенный цикл while не работает с моими запросами GROUP BY

Я немного застрял с while цикл и нужна помощь, чтобы найти неправильный код.

Моя таблица 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 значения и список только уникальные с циклом, а затем с помощью второго цикла список всех доступных 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);

Вот SQL скрипка из GROUP BY запросить этот сервер для чего-либо:
http://sqlfiddle.com/#!2/96044/3

Я не уверен, что это должно быть достигнуто с помощью второго цикла, поэтому любые предложения, как сделать эту работу, будут оценены.

РЕДАКТИРОВАТЬ
Это проливает свет на проблему, но все еще не может заставить ее работать в моем коде:
http://board.phpbuilder.com/showthread.php?10373392-RESOLVED-Nested-While-Loops-and-mySQL
Спасибо!

0

Решение

Почему бы не позволить sql сделать всю вашу работу? Вам нужен только один запрос. Этот запрос получает таблицу, которую вы хотите, тогда вы можете использовать только один цикл в php, чтобы просмотреть записи 🙂

SELECT model_body, variant FROM tbl_catalog WHERE make = 'M1' GROUP BY model_body, Variant;
0

Другие решения

Вот решение, которое я выбрал — если оно кому-нибудь поможет:

<?php while (!$rs_main_model->EOF)   { ?>
<div>
<div>
<h2<?php echo $rs_main_model->fields['model']; ?></h2>
<?php $sql_variant = "SELECT * FROM tbl_catalog WHERE model_body = '".$rs_main_model->fields['model_body']."'"; $rs_variant = $db -> Execute($sql_variant); ?>
</div>
<div>
<?php while (!$rs_variant->EOF) { ?>
<?php echo $rs_variant->fields['variant']; ?>
<?php $rs_variant->MoveNext(); } ?>
</div>
</div>
<?php $rs_main_model->MoveNext(); } ?>
0

По вопросам рекламы [email protected]