Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z zapetlonym pytaniem
misty
post
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:

  1. mysql> DESCRIBE osoba;
  2. +----------------+-------------+------+-----+---------+----------------+
  3. | FIELD | Type | NULL | KEY | DEFAULT | Extra |
  4. +----------------+-------------+------+-----+---------+----------------+
  5. | id_osoba | int(11) | NO | PRI | NULL | AUTO_INCREMENT |
  6. | imie | varchar(20) | NO | | | |
  7. | nazwisko | varchar(30) | NO | | | |
  8. | data_urodzenia | date | NO | | | |
  9. | plec | char(1) | NO | | | |
  10. | zarobki | varchar(15) | YES | | NULL | |
  11. +----------------+-------------+------+-----+---------+----------------+




  1. mysql> DESCRIBE rodzice;
  2. +-----------+---------+------+-----+---------+-------+
  3. | FIELD | Type | NULL | KEY | DEFAULT | Extra |
  4. +-----------+---------+------+-----+---------+-------+
  5. | id_osoba | int(11) | NO | | | |
  6. | id_matka | int(11) | YES | | NULL | |
  7. | id_ojciec | int(11) | YES | | NULL | |
  8. +-----------+---------+------+-----+---------+-------+



  1. mysql> DESCRIBE wspolmalzonek; +------------------+---------+------+-----+---------+-------+
  2. | FIELD | Type | NULL | KEY | DEFAULT | Extra |
  3. +------------------+---------+------+-----+---------+-------+
  4. | id_osoba | int(11) | NO | | | |
  5. | id_wspolmalzonek | int(11) | YES | | NULL | |
  6. +------------------+---------+------+-----+---------+-------+



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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
misty
post
Post #2





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


no ale w sumie to zapytanie to jest praktycznie to co sama pisalam pare postow wyzej-czyli znajdz imiona, nazwiska (ja szukalam id) osob ktore sa matka albo ojcem, tyle ze ine dalam jeszcze "where". to mi zwraca empty set-nie wiem czemu. ej nie chodzi mi o zlaczenia, tylko o to ze ja nie potrafie sobie wyobrazic tego zapytania. zapetlam sie..
no bo -wybierz osoby ktore sa matka lub ojcem, przy czym ich dziecko tez jest matka lub ojcem.. no i z tego jeszcze maxa..



to Twoje zapytanie to to samo co:
  1. SELECT imie, nazwisko FROM osoba WHERE id_osoba = id_matka OR id_osoba = id_ojciec;

tyle ze bez 'where'. no ale jak mowilam-oba zwracaja empty set wiec cos jest nie tak

kurde, staram sie isc Twoim tokiem rozumowania i z tego co rozumiem to po where musza byc id ktora sa znow ojcami lub matkami, czyli robie kolejne zlaczenie:

  1. SELECT c.imie, c.nazwisko FROM osoba o LEFT JOIN osoba c ON (c.id_matka = o.id_osoba OR c.id_ojciec = o.id_osoba) WHERE o.id_osoba = (SELECT i.id_osoba FROM osoba i WHERE i.id_osoba = i.id_matka OR i.id_osoba = i.id_ojciec);


tyle ze to zwraca empty set, co jest w sumie logiczne skoro pierwsze wyrazenie zwraca juz empty set..
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 12:10