[mysql] problem z napisaniem zapytania - POMOCY! :/

0

Skonstruowalem nastepujace zapytanie:

<font color="green"><font color="red">SELECT</span> foldery.fl_id, pliki.pl_id <font color="red">FROM</span> foldery
<font color="red">LEFT JOIN</span> pliki <font color="red">ON</span> pliki.pl_fl_id = foldery.fl_id</span>

Nie otrzymuje jednak wyniku, o ktory mi chodzi. Bywa, ze foldery zawieraja poza plikami podfoldery, a te sa w wyrzucanych wynikach pomijane. Sprobuje przedstawic to w postaci tablicy. Otrzymuje wynik np.:

Array
(
    [0] => Array // FOLDER
        (
            [0] => 60  // id folderu
            [1] =>      // id pliku
        )

    [1] => Array // PLIK
        (
            [0] => 61  // id podfolderu
            [1] => 55  // id pliku (w podfolderze 61)
        )
)

a chcialbym otrzymac:

Array
(
    [0] => Array // FOLDER
        (
            [0] => 60 // id folderu
            [1] =>     // id pliku
        )

    [1] => Array // PODFOLDER
        (
            [0] => 61 // id podfolderu
            [1] =>      // id pliku
        )
    [2] => Array // PLIK
        (
            [0] => 61  // id podfolderu
            [1] => 55  // id pliku (w podfolderze 61)
        )
)

Czy ktos mnie zrozumial? [wstyd]
Jak powinno wygladac zapytanie, ktore zwroci mi taki wynik, o jaki mi chodzi? A moze w ogole jakos inaczej mozna by zebrac te dane? Nie mam pojecia o laczeniu i grupowaniu, a powyzsze zapytanie jest owocem dlugich prob i intensywnego myslenia :P Bardzo wiec prosze o pomoc i z gory dziekuje.

0

A moze powiedz do czego Ci takie dane potrzebne, bo takie zapytanie jakie chcesz dac, troche mija sie z celem, nie lepiej to rozbic na dwa zapytania??

0

Jesli to mysql, to niespecjalnie da sie to jakos ladnie i sprytnie zrobic (tabele tymczasowe w 5.0 sa srednio uzyteczne). Ja proponuje zrobic while'a i zapisywac sobie potencjane podfoldery i ponownie wykonac zapytanie dla samych podfolderow, pozniej dla ich podfolderow, itd.

czyli cos w stylu

lista_podfoderow = startowe_id;
while(lista_podfolderow nie jest pusta)
{
  if(lista_podfoderow == startowe_id)
  zapytanie_poczatkowe; - takie jak masz na poczatku
  else 
  {
     zapytanie + where folder_id in (lista id podfolderow z listy);
  }
  dodaj_podfoldery_do_listy(wynik_zapytania);
}

Zapytan bedzie wiec tyle ile ma najglebszy poziom podfolderu. Nawet dla duzej ilosci danych (normalny zapchany dysk) tych poziomow nie jest bardzo duzo ( u mnie chyba jakies 12), wiec nie bedzie to jakies bardzo nieoptymalne.

pozdrawiam
johny

0

Dzieki wielkie za pomoc - poradzilem sobie [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1