Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Dotaz do MySQL

Ahoj, koukám, že ještě taky nespíš :-D.

Tahle věc by se dala velice pěkně naskriptovat v PHP, které máš na straně serveru.
Nejsem si těď jistý, jestli z hlediska formátování je vůbec možno to jednoduše vypsat jenom za pomocí zamýšleného SQL.
Zkrátka, jestli se lze vůbec PHP vyhnout.

Když už na to budeš muset pustit PHP, tak nějak takto (pokud to bude podle toho ORDER BY):
Prostě tam dáš něco takového:

definuješ pomocné proměnné. Do těch si zapíšeš poslední názvy vypsaného Kraje a Města.
No a jenom, když bude kraj či město nové, tak ho vypíšeš. Jinak znovu ne.

$LastKraj = '';
$LastMesto = '';
A v cyklu while, kde to vypisuje, budeš porovnávat hodnotu aktuálního záznamu s předchozím.
Tedy něco takového:

while ($dotazRow) // smyčka dotazu z DB
{
$AktualniKrajRowRecord = $dotazRow['kraj'];
$AktualniMestoRowRecord = $dotazRow['mesto'];

if ($LastKraj != $AktualniKrajRowRecord)
echo "<h1>". $AktualniKrajRowRecord ."</h1>"; // Toto vypíše velkým např. Středočeský kraj

// a zapíšeme, který kraj byl poslední, pro příští porovnání:
$LastKraj = $AktualniKrajRowRecord ;


//a to samé pro město
if ($LastMesto != $AktualniMestoRowRecord)
echo $AktualniMestoRowRecord . "\t" . $dotazRow['datum'] . "\t" . $dotazRow['tkosp_akce']   ; // Tady výpíše velkým např. Beroun
else
echo "\t\t" . $dotazRow['datum'] . "\t" . $dotazRow['tkosp_akce']   ; // Tady tedy vypíše také vše, kromě města

$LastMesto = $AktualniMestoRowRecord;  // Uložení pro další průchod

}
Takhle získáš úplnou a jednoduchou kontrolu nad tím, jak to vypisovat jen 1x
Uvidíme, co na to ostatní rádci. Tohle je první, co mě napadlo.


//Editace

A pokud bys bojoval s dotazem, že ti vypíše více záznamů opakovaně, tak použiješ DISTINCT na ID, tady je na něho demo:
https://www.w3schools.com/sql/trysql.asp?filename= trysql_select_distinct

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny