

PHP/Mysql - vrácení obsažených položek v databázi
Zdravím poradňáky.
Potřebuji poradit jak dostat z databáze obsah jednoho sloupečku a to pouze jednou.
Např:
V tabulce ve sloupci žánry je:
hudba, hudba, video, film, hudba, video.
Já bych potřeboval upravit třeba na:
hudba, film, video.
Existuje na to nějaká funkce? Nebo se to dá napsat přímo do dotazu. Teď si vymýšlím:
$query = "SELECT zanr FROM knihovna ONLY ONE TIME";
Díky za tipy.
ONLY ONE TIME
. Jestli jsem tě pochopil, tak se na to používá LIMIT
Takhle:
Prostuduj si základy MySQL.
Potom, jestli budeš chtít vybrat jen hudba, film, video tak použiješ PHP funkci explode a vybereš si z pole, co vznikne to, co chceš.
To jo to vím. Ale já potřebuji vrátit jen jednou tu stejnou hodnotu z toho pole co mi to vrací.
Tak ještě raz:
potřebuji ty hodnoty vrátit jenom jednou: 1,2,4,5,6.
třeba čísly: 1,2,1,2,2,2,2,1,5,6,1,4,5.
A já
Zkus v SQL dotazu parametr DISTINCT.
S tímhle to jde ještě rychleji - vyřešeno.
U dotazu je na to taková zelená fajfka...
Jestli jsem už to konečně pochopil, tak ti z výsledku MySQL vyjde něco takového: 1,2,1,2,2,2,2,1,5,6,1,4,5
Pokud to budeš chtít nějak seřadit podle velikosti / jinak, tak s tím pracuj před funkcí implode.
To je to co jsem potřeboval
!
Stejně mám neblahé tušení, že máš špatně navrženou strukturu databáze. Pro žánry bys měl mít extra tabulku a už při vkládání kontrolovat, abys v ní neměl duplicitní záznamy. A pak žánry propojit s tabulkou filmů nebo písniček přes ID.
Původně jsem (udělal jsem to v jiné části webu) přiřazoval čísla a pak vypisoval:
rozdělil pomocí while,list a fetch_row a dostal $cis_zanru;
a pak vypisoval:
Ale bylo to zdlouhavé a pak jsem nevěděl, co které číslo znamená.
SELECT DISTINCT je samozřejmě požadované řešení problému.
Pomocí GROUP BY bys navíc mohl položky požadovaného žánru sečíst apod.