2016-03-10 140 views
0

如何用SQL查询制作嵌套SQL循环?它只返回table diskuze的一行和表odpovedi的所有行。感谢PHP - 用SQL查询嵌套while循环

  • 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

我认为MySQL的加入是你想要的.. – Tschallacka

+0

mysql_ *功能已被弃用,请考虑使用mysqli_这里需要一个循环和转换您的两个栏目查询*或PDO。 –

+0

使用JOIN,如:SELECT * FROM diskuze LEFT JOIN odpovedi USING(ID_diskuze)... 或使用不同的变量名称, NO $ result = mysql_query($ sql); while($ row = mysql_fetch_array($ result)){ $ result = mysql_query($ sql); ($ row = mysql_fetch_array($ result)){ } } 但是 $ result = mysql_query($ sql); while($ row = mysql_fetch_array($ result)){ $ result2 = mysql_query($ sql2); while($ row2 = mysql_fetch_array($ result2)){ } } – immobiluser

回答

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; 
+0

在每个周期中,我需要从diskuze获取一条记录,并从odpovedi获取所有记录,其中diskuze.id_diskuze = odpovedi.id_diskuze –