pobranie danych z 3 tabel
DeXtoR27 - 24-10-2005 19:53
pobranie danych z 3 tabel Witam
Są sobie trzy tabele
Tab.1
budowy ------- id_budowy id_dostawcy id_kraju nazwa_budowy
Tab.2
dostawcy -------- id_dostawcy id_budowy id_kraju nazwa_dostawcy
Tab.3
kraj -------- id_kraju nazwa_kraju
No i chcę za jednym zapytaniem wyciągnąć nazwę kraju dla budowy i dostawcy. No i nie bardzo mi wychodzi :)
-- DeXtoR
DeXtoR27 - 24-10-2005 19:53
baza jest na mysql
-- DeXtoR gg: 3811238 // ICQ: 162295582 // Tlen: donremigio // WPK: donremigio www.krolak.imn.pl // www.master-of-orion.sztab.com // www.sztab.com www.tap3tki.glt.pl
Robert Grabowski - 24-10-2005 19:53
DeXtoR27 wrote: > Witam [...] > > No i chcę za jednym zapytaniem wyciągnąć nazwę kraju dla budowy i > dostawcy. > No i nie bardzo mi wychodzi :) > >
Złączenia tabel to elementarz - poczytaj o JOIN.
pozdrawiam Robert Grabowski
DeXtoR27 - 24-10-2005 19:53
Robert Grabowski napisał(a):
> Złączenia tabel to elementarz - poczytaj o JOIN.
W tym problem że czytam i nie rozumiem :)
Nie jest dla mnie problemem wyciągnięcie informacji z pól o różnych nazwach np.:
SELECT budowy.nazwa_budowy, dostawcy.nazwa_dostawcy FROM budowy, dostawcy WHERE budowy.id_dostawcy = dostawcy.id_dostawcy
Problem mam w tym że w jednej tabeli id_kraju wskazuje na jakiś rekord w tabeli z krajami, i w drugiej tabeli wskazuje na inny kraj
I jak wyciągnąć na raz pole nazwa_kraju dla budowy i dostawcy
-- DeXtoR
Jarosław Szczepankiewicz - 24-10-2005 19:53
poczytaj o aliasach
DeXtoR27 - 24-10-2005 19:53
Udało mi się zmajstrować coś takiego:
SELECT dostawcy.nazwa_dostawcy, budowy.nazwa_budowy, dk.nazwa_kraju AS nazwa_kraju_dostawcy, bk.nazwa_kraju AS nazwa_kraju_budowy FROM dostawcy LEFT JOIN kraj AS dk ON dostawcy.id_kraju = dk.id_kraju, budowy LEFT JOIN kraj AS bk ON budowy.id_kraju = bk.id_kraju WHERE budowy.id_dostawcy = dostawcy.id_dostawcy
Działa
Dziękuję za wskazówki
-- DeXtoR
Robert Grabowski - 27-10-2005 23:55
DeXtoR27 wrote: > Udało mi się zmajstrować coś takiego: > > SELECT dostawcy.nazwa_dostawcy, > budowy.nazwa_budowy, > dk.nazwa_kraju AS nazwa_kraju_dostawcy, > bk.nazwa_kraju AS nazwa_kraju_budowy > FROM dostawcy LEFT JOIN kraj AS dk ON dostawcy.id_kraju = dk.id_kraju, > budowy LEFT JOIN kraj AS bk ON budowy.id_kraju = bk.id_kraju > WHERE budowy.id_dostawcy = dostawcy.id_dostawcy > > > Działa > > Dziękuję za wskazówki >
Da się to jeszcze ładniej napisać rezugnując z where na rzecz joina tabel dostawcy i budowy.
select d.nazwa_dostawcy, b.nazwa_budowy, dk.nazwa_kraju, bk.nazwa_kraju from budowy b join dostawcy d on b.id_dostawcy = d.id_dostawcy left outer join kraj dk on d.id_kraju = dk.id_kraju left outer join kraj bk on b.id_kraju = bk.id_kraju
Nie wiem, czy left outer joiny są konieczne - to już zależy od struktury Twojej bazy danych.
pozdrawiam Robert Grabowski
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?=
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
[laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?=
Połączenie bazy danych z wykonaniem polaczenia telefonicznego
[mssql] insert do tabeli na podstawie danych z innej tabeli
[oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
[MySQL] - Wstawianie aktualnej daty do bazy danych - PHP i MySQL
zanotowane.pldoc.pisz.plpdf.pisz.plfelgiuzywane.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|