Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]Jak wyświetlic i pogrupowac wyniki wg ukladu matka -> dziecko
Forum PHP.pl > Forum > Przedszkole
kukix
Witam.
Posiadam tabele z wpisami z polem "parent".

Potrzebuje teraz wyświetlic wyniki i zgrupować do siebie rodzica i dzieci.


Potrzebuje otrzymac wynik w postaci:

Cytat
RODZIC 1
DZIECKO A
DZIECKO B
DZIECKO C

RODZIC 2
DZIECKO A
DZIECKO B
DZIECKO C


Potrzebował bym, żeby sprawdzić, czy rodzic spełnia okreslone warunki np (WHERE warunek1='A' AND warunek2='B' ORDER BY kolumna 1).

P.S. Będzie tylko jeden poziom dzieci.


Jak ułozyc zapytanie, aby tak wyświetlic wyniki?
Będe wdzięczny za wszelkie wypowiedzi.
gothye
wykonaj jedno zapytanie do SQL , a potem w 2 pętlach foreach połącz parent z child przez warunek if
kukix
Cytat(gothye @ 15.06.2010, 13:20:36 ) *
wykonaj jedno zapytanie do SQL , a potem w 2 pętlach foreach połącz parent z child przez warunek if


to nie o to chodzi.. chcilem ulozyc zapytanie sql, które zwróci mi juz tak pogrupowane wyniki..
netmare
  1. SELECT a.nazwa AS rodzic, b.nazwa AS dziecko
  2. FROM nazwatabeli AS a
  3. INNER JOIN nazwatabeli AS b
  4. ON a.id_parent IS NULL AND b.id_parent = a.id


tej wersji bym się raczej trzymał a po twojemu to jakoś tak (pod warunkiem że najpierw był dodawany rodzic a później dzieci):

  1. SELECT b.nazwa, b.id
  2. FROM nazwatabeli AS a
  3. INNER JOIN nazwatabeli AS b
  4. ON b.id_parent = a.id OR (b.id = a.id AND a.id_parent IS NULL)
  5. ORDER BY b.id ASC


nazwatabeli - nazwa tabeli w której masz te dane
id - pole klucza
id_parent - pole określające id rodzica, null jeśli rodzic
nazwa - to pole w którym masz stringi rodzic 1, dziecko a itd

SQL-e pisane z głowy bez sprawdzania, za ewentualne pomyłki przepraszam.

Tak czy owak bardzo oryginalna konstrukcja bazy winksmiley.jpg
kukix
Dziękuje za podpowiedzi.. mam takie coś już:

  1. SELECT b.nazwa, b.id
  2. FROM nazwatabeli AS a
  3. INNER JOIN nazwatabeli AS b
  4. ON b.id_parent = a.id OR (b.id = a.id AND b.id_parent IS NULL)
  5. WHERE a.id_parent IS NULL
  6. ORDER BY a.id_parent, b.id_parent



Jest już prawie ok, ale zwracane rekordy dziecka napisywane są przez rekordy mamy.

Czyli mam np jedną mame i troje dzieci, to zwracany wynik zawiera cztery razy dane mamy.

Czy można to jakoś zmienić, czy musze każde pole bazy nazywac inaczej (b.pole as inna_nazwa_pola)
thek
Daj SELECT a.*, b.* i popatrz które pola są prawidłowymi smile.gif To je wybierz do wyświetlania winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.