Autor Zpráva
Klicpera
Profil *
Dobrý den,
mám v tabulce a DB sloupci modely hodnoty VARCHAR tohoto typu:

Auta|Motorky|Lodě|Rakety

a potřeboval bych nějak jedním výrazem seskupit statistiku všech výskytů údajů mezi oddělovačem "|"


Očekávaný výsledek třeba:

1. Auta 42x
2. Motorky 33x
3. Lodě 29x
...atd.



Prosím, nekamenujte mne zato že to mám dělané zrovna takto (blbě), předělávat strukturu sloupců nehodlám, jde jen o moji osobní localhostovou aplikaci pro radost a funguje to pro mé účely skvěle. Stránky pro lidi nedělám. Jen zkuste laikovi poradit jak na tu statistiku, děkuji moc ;-).
Chuchycek
Profil
Taky dobrý,

SELECT COUNT(modely) as pocet, modely FROM tabel GROUP BY modely
Klicpera
Profil *
Dík za snahu. Možná jsi mne nepochopil, nebo jsem to blbě napsal...

struktura tabulky (id = int, modely varchar)

id - modely
---------------------------
1  - 'Auta|Motorky|Lodě|Rakety'
2  - 'Auta|Lodě|Rakety|Vlaky'
3  - 'Auta|Vlaky'

...atd


Já nepotřebuji statistiku celých hodnot, ale navíc statistiku rozparsovaných údajů... třeba to jde jen pomocí PHP já nevím, nejsem zkušený. Poradíte, děkuji!
Chuchycek
Profil
Tak k tomu využí buď php funkci str_repeat nebo sql funkci REPEAT.
Klicpera
Profil *
Ale já ty data v tabulce (sloupcích již mám uložena, dle uvedeného příkladu), a str_repeat pouze vypisuje zadaný znak tolikrát kolik člověk žádá, to s mím dotazem vůbec nesouvisí.... To mi žádnou statistiku nevypočítá (neseřadí).
Chuchycek
Profil
Aha,

tak to použí při výpisu funckci explode a cout

$sql = ""; // tvoje sql
$vyber = mysql_query($sql);
while($vypis = mysql_fetch_array($vyber){
$data = explode('|', $vypis['modely']);
echo $data[0] . count($data);
}
Snad ti to pomohlo, zbytek si dále ošetři sám. :-)

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: