Vycuc dat z viac ako 4 tabuliek (MySQL) problem

Máte problém, hľadáte niečo? Opýtajte sa a poradíme...

Moderátor: Moderators

stelmi
Thief
Thief
Príspevky: 1
Dátum registrácie: Pi Okt 21, 2011 6:33 pm

Vycuc dat z viac ako 4 tabuliek (MySQL) problem

Príspevok od užívateľa stelmi » Pi Okt 21, 2011 6:53 pm

Zdravim, neviem kam to mam napisat, snad pisem dobre.
Mam problem pri vyberani dat z viacerych tabuliek jednym sql dopytom.

Problem:

Mam takyto strom:
  • Kategoria1
    • Podkategoria1
    • Podkategoria2
      • PodPodkategoria1
      • PodPodkategoria2
      • PodPodkategoria3
    • Podkategoria3
  • Kategoria2
Mam 4 hlavne tabulky:
- Texty
- Obrazky
- Video
- Hudba

Jednu tabulku Kateorie

4 spojovacie tabulky:
- Texty_kategorie
- Obrazky_kategorie
- Video_kategorie
- Hudba_kategorie

V tabulke kategorie je klasicky ulozeny strom kategorii, v hlavnych tabulkach je obsah produktov, spojovacie tabulky zabezpecuju to, ze v jednej kategorii moze byt viac produktov, ale jeden produkt moze byt vo viacerych kategoriach.

Kedze kategoria moze mat podkategorie, ma kategorizacia produktov sluzit len ako nejaky filter. cize ked si kliknem na Kategoria1, zobrazi sa mi obsaz zo vsetkych pod kategorii a podpodkategorii (hierarchicky). Ked kliknem na podkategoriu 2, zobrazia sa mi data ktore su v podpodkategoriach danej podkategorie, atd...

A potrebujem spravit dump, aby mi vratil vsetky produkty, ktore sa nachadzaju v danom zozname kategorii (nejaky zoznam id kategorii), unikatne podla id produktu, zoradene podla niecoho (napr datum),

Problem je v tom, ze neviem zostavit sql dump tak, aby mi vratil hodnoty zo vsetkych tabuliek tak ako treba. Stale mi to vracia len prvu tabulku, alebo prve dve tabulky.

skusal som to takto:

Kód: Vybrať všetko

SELECT c.id, c.topic, a.topic, gi.topic, gm.topic, gmu.topic FROM categories c

LEFT JOIN articles_categories ac ON (c.id = ac.category)
LEFT JOIN articles a ON (a.id = ac.article)
LEFT JOIN gallery_images_categories gic ON (c.id = gic.category)
LEFT JOIN gallery_images gi ON (gi.id = gic.image)
LEFT JOIN gallery_movies_categories gmc ON (c.id = gmc.category)
LEFT JOIN gallery_movies gm ON (gm.id = gmc.movie)
LEFT JOIN gallery_music_categories gmuc ON (c.id = gmuc.category)
LEFT JOIN gallery_music gmu ON (gmu.id = gmuc.music)
WHERE a.topic IS NOT NULL OR gi.topic IS NOT NULL OR gm.topic IS NOT NULL OR gmu.topic IS NOT NULL
to mi vratilo len stlpce c.id a c.topic, ostatne boli NULL

a metoda:

Kód: Vybrať všetko

SELECT DISTINCT c.id, a.topic FROM
categories c 
INNER JOIN articles a ON ( a.id IN (SELECT article FROM articles_categories WHERE category = c.id ) )
mi vie zobrat iba 2 tabulky, pri viac ako 2 tabulkach mi to vracia null result

Viete mi niekto poradit ako to mam spravit?

Užívateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať užívateľa:

Re: Vycuc dat z viac ako 4 tabuliek (MySQL) problem

Príspevok od užívateľa _rasel^ » Ut Nov 08, 2011 11:42 pm

Ahoj, ako konkrétne vyzerá štruktúra tých tabuliek?
(Nechce sa mi prečísliš rozmýšľať a vymýšľať štruktúru a dáta, aby som to mohol otestovať... bolo by možné poskytnúť prístup do PhpMyAdmina, alebo niejakú zálohu DB? Ak áno, tak mi napíš v súkromnej správe.)
..:: Etomite CMS → Rulezzz !.!.!. ::..

Užívateľov profilový obrázok
puschpull
Expert
Expert
Príspevky: 112
Dátum registrácie: Št Mar 19, 2009 9:31 am
Bydlisko: Czech Republic - Most
Kontaktovať užívateľa:

Re: Vycuc dat z viac ako 4 tabuliek (MySQL) problem

Príspevok od užívateľa puschpull » Št Feb 09, 2012 4:18 pm

Něco podobného jsem programoval na web svého bráchy:
http://dawep.net
např:
http://dawep.net/galerie.php?id=9 (zobrazí kategorri "Ptáci" i všechny podkategorie

(_rasel^ mi v tomto také významě pomohl, díky jemu!)
----------------------------
http://puschpull.org
:-)

Napísať odpoveď