![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 13.03.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam
mam strukture tabeli id (auto int), parent (int), nazwa (varchar) i w tabeli mam przykladowe dane 1, 0, text1 2, 0, text2 3, 2, text3 4, 1, text4 5, 1, text5 6, 2, text6 itd..... itd Teraz chcialbym uzyskac zapytanie, ktore wybierze mi z tej bazy wszystkie wg schematu: gdzie parent = 0 i jednoczesnie gdzie parent=id Tzn. w wyniku chcialbym uzyskac strukture: id1, parent1, nazwa1, id2, parent2, nazwa2 z danymi 1, 0, text1, null, null, null 2, 0, text2, null, null, null 2, 0, text2, 3, 2, text3 1, 0, text1, 4, 1, text4 1, 0, text1, 5, 1, text5 2, 0, text2, 6, 2, text6 Czy jest to mozliwe? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
[sql:1:f92bb4f6d6]SELECT d.*, d2.* FROM drzewko d LEFT JOIN drzewko d2 ON (d2.id = d.parent)[/sql:1:f92bb4f6d6]
![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 13.03.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam
no niestety to nie to, sprawdzalem moze cos innego? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
Więc w takim razie nie rozumiem logiki w wyniku jaki ma zwracać to zapytanie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 13.03.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam
Naprawde nikt nie wie? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Masz tu trochę zachachmęcone.
To klasyczny przykład sprzężenia wewnętrznego gdzie dane z jednej tabeli w sposób hierarchiczny odwołują się do niej samej na zasadzie podwładny-kierownik. Na pewno będzie trzeba sprzęgnąć tą tabelę ze sobą na zasadzie: select [select_sequence] FROM tabela [INNER|LEFT|RIGHT] JOIN tabela as tabela1 on [join_sequence] WHERE [where_sequence] Musisz zatem ostrożnie mówić o polach zwłaszcza ID i PARENT bo pełnią pne podwójną funckję i występują w tabeli postawowej i jej aliasie. Chcemy podłączyć tabelę 'tabela' jako 'tabela1' do tabeli 'tabela' z żądaniem aby pole 'tabela1.parent' było równe 'tabela.id' a jednocześnie żądasz aby 'tabela.parent' był = 0. I jest to prosta sprawa.
Jednak zapytanie to zwraca wynik 4 wierszowy: 1 0 text1 4 1 text4 1 0 text1 5 1 text5 2 0 text2 3 2 text3 2 0 text2 6 2 text6 brakuje tu dwóch pierwszych wierszy z twojego "żądanego wyniku". I baza nie może ich zwrócić bo niby dlaczego? Z twojego wyniku wynika że wierszom o id=1 i id=2 raz można przypisać "potomka" a raz nie. A tymczasem kazdy z tych dwu rekordów ma przypisanych dwóch potomków i nie można im podopisywac jeszcze NULL'ów. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:36 |