Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Powiązanie tabel w MySQL
Forum PHP.pl > Forum > Przedszkole
miniol
Mam bardzo banalne pytanie. Mianowicie- mam dwie tabele: osoba oraz plec

Zawartość tabeli `osoba` (kolumny: id, imie, nazwisko, plec)
Kod
1 adam nowak 1
2 piotr kowalski 3
3 stefan nowicki 1
4 maria kowalska 2


Kod
Zawartość tabeli `plec` (kolumny: id, nazwa)
1 mężczyzna
2 kobieta
3 brak danych


Jak zadać pytanie mysql, aby wyświetlił mi wszystkie rekordy w takiej postaci
Kod
1 adam nowak mężczyzna
2 piotr kowalski brak danych
3 stefan nowicki mężczyzna
4 maria kowalska kobieta


Czyli prościej mówiąc zamiast id płci, niech wyświetli nazwę płci.

Na obecną chwilę wstawiam takie zapytanie, ale jest błędne.

  1. SELECT * FROM `osoba`,`plec` WHERE 'osoba.plec' = 'plec.id' LIMIT 0 , 30


Domyślam się, że temat był wałkowany pewnie wiele razy, ale szukam już blisko dwie godziny i żadne ze znalezionych rozwiązań mi nie pomogło.
nospor
1) Tworzenie oddzielnej tabeli na płec to lekkie przegięcie wink.gif
2) zwykłe LEFT JOIN załatwi sprawę o którą pytasz

ps:
'osoba.plec'
yyyy,,,,, wiesz co robisz apostrof? Nie wiesz. A jak nie wiesz co dana rzecz robi to jej lepiej nie używaj wink.gif

'osoba.plec' = 'plec.id'
Tutaj zaś porównujesz tekst 'osoba.plec' z 'plec.id'. A od kiedy takie teksty są sobie równe?
ixpack
  1. SELECT osoba.imie, osoba.nazwisko, plec.nazwa AS plec FROM osoba LEFT JOIN plec ON osoba.plec = plec.id;


Ale jakbyś ujednolicił "plec.id" z "osoba.plec" - tak, że "osoba.plec_id" = "plec.plec_id" - to zamiast "LEFT JOIN plec ON osoba.plec = plec.id" mógłbyś użyć " LEFT JOIN plec using(plec_id);" wink.gif

Pozdr.

Edit: Jakiś mod mnie ubiegł - przebiegłe stworzenia :/. Jeszcze jedna mała uwaga... Nie pytaj o ich płeć - a o ich tytuł wink.gif (Pan, Pani. A dla ang. jeszcze lepiej bo wiesz czy są żonaci ;]).
miniol
Akurat potrzebuję tego dla nieco innych celów niż płeć wink.gif , ale dla łatwiejszego zobrazowania mojego problemu użyłem właśnie takich tabel smile.gif Interesuje mnie nr ISBN oraz tytuł książki.

A co do zbędnych apostrofów, to jak łatwo się domyśleć, nie bez powodu pisałem w tym dziale, więc mogłeś już sobie darować te docinki w "przedszkolu" wink.gif

Ale, dzięki za pomoc.

Poniżej poprawne (albo jeśli nie poprawne, to przynajmniej działające) zapytanie:

  1. SELECT osoba.id, osoba.imie, osoba.nazwisko, plec.nazwa FROM osoba LEFT OUTER JOIN plec ON osoba.plec = plec.id LIMIT 0 , 30


ixpack, dzięki za odpowiedź, chociaż tak jak już wspominałeś, nieco się spóźniłeś smile.gif
nospor
Cytat
więc mogłeś już sobie darować te docinki w "przedszkolu"
To nie docinki a wskazówki. Mam nadzieję że się do nich zastosujesz na przyszłość: jak nie wiesz co dana rzecz robi to albo sprawdź co robi albo nie używaj smile.gif
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.