Avatar
Filip
Člen
Avatar
Filip:4.5.2016 17:44

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.5.2016 17:45
 
Odpovědět 4.5.2016 17:44
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Filip
Fredep:4.5.2016 17:56

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.5.2016 17:58
Nahoru Odpovědět 4.5.2016 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:4.5.2016 18:15

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.5.2016 18:15
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Filip
Fredep:5.5.2016 7:29
$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.5.2016 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:5.5.2016 8:02

Jo funguje, diky moc :)

 
Nahoru Odpovědět 5.5.2016 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.