![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
hej, mam nastepujacy problem-mam sobie baze, pare tabel.. w nich informacje o osobach. kazda osoba moze miec mame lub(i) tate lub (i) wspolmalzonka. musze wyciagnac z bazy osoba ktora ma jak najwiecej wnukow. z tego co rozumiem (i jak to sobie wyobrazam) bedzie to osoba ktora ma wspolmalzonka i ktora jest ojcem/matka dla kogos, gdzie ten 'ktos' tez musi miec wspolmalzonka i byc dla kogos ojcem/matka.. strasznie to zapetlone. wrzucilam te dane do 3ch tablic:
no i nie moge wyciagnac tych danych.. tak sie zastanawiam-czy na pewno moge, czy dobrze zaprojektowalam tablice? czy moglby mi ktos pomoc w tym problemie? pzdr, misty Ten post edytował misty 20.07.2009, 14:23:20 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tak jak Ci napisałem wcześniej już, takie zapytanie:
wybierze rekordy, które będą wyglądały np. tak: Cytat id_osoby = 15, , czyli spełniony będzie warunek, że id_osoby = id_matka ALBO id_osoby = id_ojciec. Porównujesz dwa pola tego samego rekordu. id_matka = 15, id_ojciec = 23 Teraz rozumiesz swój tok myślenia? A moje zapytanie: Kod SELECT c.imie, c.nazwisko mówi w skrócie: wybierz osoby, których matka lub ojciec mają id_osoby = 123. Można by to oczywiście napisać prościej, ale powyższe zapytanie używające JOIN'y możesz bardzo łatwo przerobić na wyszukiwanie wnuków, prawnuków itd.FROM osoby o LEFT JOIN osoby c ON (c.id_matka = o.id_osoby OR c.id_ojciec = o.id_osoby) WHERE o.id_osoby = 123 Sorry, ale to są podstawy. Jeśli nie rozumiesz tego typu zapytań to pozostaje Ci tylko zajrzeć do manuala albo jakiegoś tutoriala. Co do drugiej części pytania - wystarczą 3 rzeczy: GROUP BY, COUNT i MAX. Wszystko do znalezienia w manualu. Ten post edytował sowiq 20.07.2009, 22:03:26 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 13:20 |