=?iso-8859-2?Q?Zagnie=BFd=BFone_zapytanie_=5BMySQL=5D=5BPHP=5 D?=
Tadeusz S. - 03-02-2006 09:52
=?iso-8859-2?Q?Zagnie=BFd=BFone_zapytanie_=5BMySQL=5D=5BPHP=5 D?= Witam, mam taką bazę danych, która ma dwie tablice:
Grupy: ID, Nazwa Parent
Elementy ID, WGrupie, Nazwa
Struktura jest przygotowana do tego, aby można było robić grupy, podgrupy - i na każdym poziomie przypisywać im elementy. Teraz rodzi się problem sensownego odczytu z takiej bazy. Zrobiłem sobie funkcję (PHP), która czyta wszystkie grupy rekurencyjnie. Na początek w pętli wyciąga wszystkie grupy, które mają Parent=0 (główne), potem te, które mają Parent=Któraś_Główna_Grupa i tak dalej. Działa wyśmienicie! Tyle, że powoli.
Pomyślałem sobie, że szybciej będzie, jeśli wyciągnę wszystkie grupy jednym zapytaniem a dopiero kod PHP mi je ładnie ułoży. Będzie szybciej, na pewno, z tym, że jest jedno ale: Grupy można klikać, aby zobaczyć ich elementy. Grupy, które nie mają elementów mają być "nieklikalne". Czy da się wyciągnąć w jednym zapytaniu od razu ilość elementów przypisanych do danej grupy? Jakiś JOIN?
Ewentualnie może ktoś rozwiązywał taki problem i ma jakąś receptę na prędkość?
Chodzi o MySQL (4.1 a więc zagnieżdżanie zapytań dla SELECT jest) i PHP5, choć wersja PHP i sam fakt, że to PHP pewnie nie ma znaczenia.
-- pozdrawiam, Tadeusz S.
Tadeusz S. - 03-02-2006 09:52
=?iso-8859-2?Q?Re:_Zagnie=BFd=BFone_zapytanie_=5BMySQL=5D=5BP HP=5D?=
Użytkownik "Tadeusz S." <no@mail.pl> napisał w wiadomości news:43de2a1d$1@news.home.net.pl...
Może ja uściślę.
W wyniku SELECT FROM Grupy chciałbym otrzymać: ID, Nazwa, Parent, Ilość_Elementów
-- pozdrawiam, Tadeusz S.
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 03-02-2006 09:52
Tadeusz S. wrote: > > Witam, > mam taką bazę danych, która ma dwie tablice: > > Grupy: > ID, > Nazwa > Parent
Zainteresuj się metodą 5 implementacji drzewa z FAQ.
> Elementy > ID, > WGrupie, > Nazwa > > Pomyślałem sobie, że szybciej będzie, jeśli wyciągnę > wszystkie grupy jednym zapytaniem a dopiero kod PHP > mi je ładnie ułoży. Będzie szybciej, na pewno, > z tym, że jest jedno ale: > Grupy można klikać, aby zobaczyć ich elementy. Grupy, > które nie mają elementów mają być "nieklikalne". > Czy da się wyciągnąć w jednym zapytaniu od razu > ilość elementów przypisanych do danej grupy? > Jakiś JOIN?
LEFT JOIN :) Do tego COUNT i GROUP BY.
-- P.M.
Tadeusz S. - 08-02-2006 15:38
=?iso-8859-2?Q?Re:_Zagnie=BFd=BFone_zapytanie_=5BMySQL=5D=5BP HP=5D?=
Użytkownik "Paweł Matejski" <madej@spam.madej.pl.eu.org> napisał w wiadomości news:drlgkr$kif$1@inews.gazeta.pl... [...] > LEFT JOIN :) > Do tego COUNT i GROUP BY.
Dzięki, będe kombinował.
-- pozdrawiam, Tadeusz S.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
mecze sie i mecze i nic - zapytanie czesciowe
[sql][pgsql] zapytanie sql
[mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu.
[MySQL] Zapytanie z pliku , wynik do pliku
pytanie o zapytanie z having count = count z innej kolumny
zanotowane.pldoc.pisz.plpdf.pisz.plponland.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|