Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z zapytaniem :( poczatkujacy
mercii
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 1.05.2006

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


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?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Bardzo prosze o pomoc.
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
ActivePlayer
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


  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;
Go to the top of the page
+Quote Post
mercii
post
Post #3





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 1.05.2006

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


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.

Ten post edytował mercii 3.06.2006, 11:33:01
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


To dodaj jeszcze raz tabele w FROM stworz alias i otrzymasz to co potrzebujesz
Go to the top of the page
+Quote Post
mercii
post
Post #5





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 1.05.2006

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


Nie za bardzo roumiem jak mam to zrobic:( Moze jakis perzyklad (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)
Go to the top of the page
+Quote Post
SongoQ
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


  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
Go to the top of the page
+Quote Post
mercii
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 1.05.2006

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


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

Ten post edytował mercii 3.06.2006, 14:14:01
Go to the top of the page
+Quote Post
SongoQ
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


No fakt, drobna pomylka sie wkradla ale ciesze sie ze zauwazyles.
Go to the top of the page
+Quote Post

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: 24.08.2025 - 15:23