Avatar
Filip
Člen
Avatar
Filip:

Zdravim, potreboval bych poradit. Po dotazu do databaze se mi vrati mimo jine data, kde jsou obsazeny nazvy ulic. Nektere ulice mam v databazi vicekrat a potreboval bych do poli ulozit nazev ulice a pocet, kolikrat se ulice pro tento dotaz vyskytuje (priklad: vodickova - 1, dlouha - 5, celetna - 15...). Pro kazdy dotaz jsou ulice samozrejme jine. Zatim jsem si jednu po druhe ulozil do pole, ale nevim jak dal (s udaji z pole budu potrebovat dale pracovat):

$pole=array();
$i=0;
foreach ($sql as $n)
{
$ulice=$n['db_ulice']; //nacteni z databaze
$pole[$i]=$ulice;$i++;     //ulozeni $ulice do pole
}
Editováno 4. května 17:45
 
Odpovědět 4. května 17:44
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Filip
Fredep:

SQL má na to fígly:

SELECT *, COUNT(*) AS `pocet_ulic` FROM tabulka_ulice WHERE podminka=neco GROUP BY sloupec_nazv_ulice;

Přidáním GROUP BY se řádky shluknou podle ulic a pomocí COUNT(*) AS pocet_ulic přidáš sloupec s počtem těchto shluknutých ulic...

Editováno 4. května 17:58
Nahoru Odpovědět 4. května 17:56
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Filip
Člen
Avatar
Odpovídá na Fredep
Filip:

Jeste to poradne upresnim. Vyhledavam dle jmena a prijmeni, kde vysledek vraci shodu dle techto kriterii. Napr. Jan Novak je v databazi obsazen celkem 10x (takze 10 radku, ktere obsahuji jmeno, prijmeni, ulice) a v polozce ulice ma celkem 7x vodickova, 2x dlouha, 1x celetna, Petr Cerny je v databazi 2x a ma prazskou ulici 2x. SQL dotaz je

$sql=Db::queryAll("SELECT * FROM zaznamy WHERE prijmeni LIKE '$dotaz_prijmeni' AND jmeno LIKE '$dotaz_jmeno'")

;
Vysledek dotazu je vzdycky jiny. Cyklus foreach mi vypise radek po radku, ale ja bych potreboval, abych hodnoty mel v poli nasledovne:
vodickova - 7
dlouha - 2
celetna - 1
Dopredu nevim, kdo ma v databazi kolik a jakych ulic ulozenych. Do pole bych chtel ulozit kazdou ulici, ktera jeste v poli neni, a pokud uz tam je, pricte se 1. Jen nevim, jak to sestavit

 
Nahoru Odpovědět 4. května 18:15
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Filip
Fredep:
$sql=Db::queryAll("SELECT ulice, COUNT(*) AS `pocet` FROM zaznamy WHERE prijmeni LIKE '$dotaz_prijmeni' AND jmeno LIKE '$dotaz_jmeno' GROUP BY ulice");

ulice si nahraď sloupcem ve své tabulce. Mělo by to vrátit dvousloupcovou tabulku, kde v jednom sloupci je název ulice a ve druhém počet výskytů. ;)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 5. května 7:29
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Filip
Člen
Avatar
Odpovídá na Fredep
Filip:

Jo funguje, diky moc :)

 
Nahoru Odpovědět 5. května 8:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.