Autor Zpráva
paldo
Profil
Dobrý den všem, potřeboval bych poradit.
Mám dvě tabulky SKUPINY a PARAMETRY vzorku.
Potřebuji vypsat všechny parametry konkrétního vzorku rozděleno do tabulek podle SKUPIN.

Tento kód to sice vypíše vše v pořádku jen s tím problémem, že pokud již neexistují PARAMETRY ve druhé tabulce, tak se mi ještě vypíše název SKUPINY s první tabulky + hlavička tabulky, a to již nechci.
Asi nějaké do while - break, ale nevím jak to začlenit do kódu. Nejsem odborník v PHP.

<?php
require "config_db/db.php";    
echo "<strong>Výsledky provedených analýz:</strong>\n</BR>";
$result = mysql_query("SELECT * FROM $table_skupiny ORDER BY nazev");
while ($row = mysql_fetch_assoc($result)) {
    echo "$row[nazev] - $row[popis]\n";
    echo "<table width=\"85%\">";
      echo "<tr><th>P.č.:</th><th>ukazatel-parametr</th><th>jednotka</th><th>nález</th></tr>\n";
    $result1 = mysql_query("SELECT * FROM $table_vzorky_para WHERE skupina = '$row[nazev]' and id_vzorku=$id");
    while ($row1 = mysql_fetch_assoc($result1)) {
        echo "<tr> <td>$poc</td>";
    echo "<td>".$row1['para_nazev_zkr'] ."</td> <td>".$row1['jednotka'] ."</td> <td>".$row1['hodnota'] ."</td> </tr>\n";
        
    }
    echo "</table>\n";
    mysql_free_result($result1);
}
mysql_free_result($result);
?>

Předem děkuji za jakékoliv ohlasy a pomoc.
juriad
Profil
Nebo můžeš ten první dotaz upravit tak, aby vracel jen skupiny, které mají alespoň nějaké parametry.
SELECT s.*, COUNT(*) as pocet
FROM $table_skupiny s
LEFT JOIN $table_vzorky_para p ON p.skupina = s.nazev
GROUP BY s.nazev
HAVING pocet > 0
ORDER BY s.nazev

Bíle zvýrazněné části můžeš odstranit a dostaneš ten samý dotaz, ale bez možnosti nastavení minimálního počtu parametrů.

Případně 9. řádku přesunout před 6.
A přidat podmínku:
if (mysql_num_rows($result1) == 0) {
  continue;
}
Kajman
Profil
juriad:

Při left join nesmí být v count *, ale např. p.skupina, jinak pocet nemůže být nula. Případně vyhodit left z joinu a pak i zbytečnou klauzuli having.
paldo
Profil
Óóó.
Zatím jsem vyzkoušel úpravy kódu podle "juriad" a JEDE TO.
Vyzkouším i ostatní, abych se něčemu přiučil.
Každopádně všem moc děkuji.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: