如何使用SQL查询进行嵌套SQL循环?它只从表diskuze返回1行,从表odpovedi返回所有行。感谢
表diskuze
:( ID_diskuze(PK),autor_diskuze,predmet_diskuze,text_diskuze,datum_cas_diskuze)
表odpovedi
:( ID_diskuze(PK-FK),hloubka_odpovedi,autor_odpovedi,text_odpovedi,datum_cas_odpovedi)
PHP:
<?php $sql = "SELECT ID_diskuze, autor_diskuze, predmet_diskuze, text_diskuze, datum_cas_diskuze
FROM diskuze";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$ID_diskuze = $row['ID_diskuze'];
$autor_diskuze = $row['autor_diskuze'];
$predmet_diskuze = $row['predmet_diskuze'];
$text_diskuze = $row['text_diskuze'];
$datum_cas_diskuze = $row['datum_cas_diskuze']; ?>
<p>
<span style="color:rgb(204,0,0); font-weight:bold; font-size: 20px">OD: <?php echo $autor_diskuze ?></span>
<span style="color:rgb(0,0,0); font-size: 16px"> (<?php echo $datum_cas_diskuze ?>)</span><br/>
<span style="color:rgb(0,0,204); font-weight:bold; font-size: 16px">TITULEK: <?php echo $predmet_diskuze ?></span><br/>
<span style="font-weight:bold;">NAPSAL: </span><?php echo $text_diskuze ?>
</p>
<?php $sql = "SELECT hloubka_odpovedi, autor_odpovedi, text_odpovedi, datum_cas_odpovedi
FROM odpovedi
WHERE ID_diskuze = $ID_diskuze
ORDER BY hloubka_odpovedi ASC";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$hloubka_odpovedi = $row['hloubka_odpovedi'];
$autor_odpovedi = $row['autor_odpovedi'];
$text_odpovedi = $row['text_odpovedi'];
$datum_cas_odpovedi = $row['datum_cas_odpovedi'];
$odpovidajici = $autor_odpovedi . " " . $datum_cas_odpovedi . " - " . $text_odpovedi; ?>
<p>
<span style="font-weight:bold;">REAKCE:</span> <?php echo $odpovidajici ?>
</p>
<?php
}
}
?>
答案 0 :(得分:0)
我相信您不需要循环,并使用JOIN
转换您的两部分查询
SELECT o.hloubka_odpovedi, o.autor_odpovedi, o.text_odpovedi, o.datum_cas_odpovedi,
i.ID_diskuze, i.autor_diskuze, i.predmet_diskuze, i.text_diskuze, i.datum_cas_diskuze
FROM odpovedi o JOIN diskuze i
ON o.ID_diskuze = i.ID_diskuze
ORDER BY o.hloubka_odpovedi;