Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zapytaniem :( poczatkujacy
Forum PHP.pl > Forum > Bazy danych > MySQL
mercii
Witam
Mam problem z drzewem genalogicznym.
W jednej tabeli mam takie agrumenty: id_osoby,imie,nazwisko,data_ur,miejsce::::
W drugiej mam id_osoby,id_matki,id_ojca::::::
Sa jeszcze inne tabele ale z tymi mam problem.
Chodzi o to aby wyswietlic powiazania rodzinne cos w stylu:
imie nazwisko osoby|imie nazwisko matki|imie nazwsiko ojca:::::
Ja to zrobic??
Napewno poprzez jakiegos wielokrotnego joina ale nei wiem jak.
Probowalem i wyszlo mi narzie takie cos:
  1. mysql> SELECT osoby.nazwisko,osoby.imie FROM osoby INNER JOIN pow_rodz ON osoby.
  2. id_osoby=pow_rodz.id_osoby;
  3. +----------+------------+
  4. | nazwisko | imie |
  5. +----------+------------+
  6. | Marzec | Tomasz |
  7. | Marzec | Alicja |
  8. | Marzec | Malgorzata |
  9. | Marzec | Szymon |
  10. +----------+------------+
  11. 4 rows IN SET (0.07 sec)

Czyli dane tylko osoby a jak dolaczyc do tego imiona i nazwiska rodzicow?questionmark.gif?
Bardzo prosze o pomoc.
Pozdrawiam
ActivePlayer
  1. SELECT osoby.nazwisko,osoby.imie, pow_rodz.imie_matki FROM osoby INNER JOIN pow_rodz ON osoby.
  2. id_osoby=pow_rodz.id_osoby;
mercii
he he . To nie jest takie proste:(((.
Nie mam kolumy imie_matki. Mam id_matki a dane o jej danych wlasnie maja sie pobrac z relacji osoby.
Otrzymuje takie cos po zminie w Twoim zapytaniu imie_matki na id_matki
  1. mysql> SELECT osoby.nazwisko,osoby.imie, pow_rodz.id_matki FROM osoby INNER JOIN pow_rodz ON osoby.id_osoby=pow_rodz.id_osoby;
  2. +----------+------------+----------+
  3. | nazwisko | imie | id_matki |
  4. +----------+------------+----------+
  5. | Marzec | Tomasz | ala |
  6. | Marzec | Alicja | bab |
  7. | Marzec | Malgorzata | ala |
  8. | Marzec | Szymon | bad |
  9. +----------+------------+----------+
  10. 4 rows IN SET (0.00 sec)


Dodaje createy::
  1. CREATE TABLE osoby(
  2. -> id_osoby char(3) NOT NULL,
  3. -> imie varchar(15) NOT NULL,
  4. -> nazwisko varchar(20) NOT NULL,
  5. -> PRIMARY KEY (id_osoby));
  6.  
  7. CREATE TABLE pow_rodz(
  8. id_osoby char(3) NOT NULL,
  9. id_matki char(3) NOT NULL,
  10. id_ojca char(3) NOT NULL,
  11. FOREIGN KEY (id_osoby) REFERENCES osoby (id_osoby),
  12. FOREIGN KEY (id_matki) REFERENCES osoby (id_osoby),
  13. FOREIGN KEY (id_ojca) REFERENCES osoby (id_osoby));


Oraz dwa inserty::::
  1. INSERT INTO osoby VALUES('tkm','Tomasz','Jakis');
  2. INSERT INTO osoby VALUES('ale','Basia','Jakis');
  3. INSERT INTO osoby VALUES('bbb','Szymek','Jakis');
  4. INSERT INTO pow_rodz VALUES('tkm','ale');
  5. INSERT INTO pow_rodz VALUES('tkm','bbb');

wszsytko jest pisane z pamieci wiec moga sie poajwic jakies bledy.Jest to tylk oprzykladowe , ale na podstawie tego napweno mozna rozwiazac ten prolem.
Z gory dziekuje za pomoc.
SongoQ
To dodaj jeszcze raz tabele w FROM stworz alias i otrzymasz to co potrzebujesz
mercii
Nie za bardzo roumiem jak mam to zrobic:( Moze jakis perzyklad sadsmiley02.gif
SongoQ
  1. SELECT *
  2. FROM pow_rodz, osoby t1, osoby t2
  3. WHERE pow_rodz.id_osoby = t1.id_osoby AND pow_rodz.id_matki = t1.id_osoby


Ogranicz sobie pola w select. ID ma byc jako integer a nie varchar
mercii
Jak jest w zapytanie AND to nic nie podaje.Empty.Jak znowoz jest Or to robi sie iloczyn kartezjanski. Czyli jeszcze nie jest tak jak powinno byc.Kombinuje, kombinuje i nic:(

Juz smiga:)
w select pod koniec powinno byc t2 a nie t1.
DZIEKI WIELKIE
SongoQ
No fakt, drobna pomylka sie wkradla ale ciesze sie ze zauwazyles.
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.