Zapytanie SQL o wyciagniecie danych z tej samej tabeli
LprzemekL - 01-02-2007 00:07
Zapytanie SQL o wyciagniecie danych z tej samej tabeli
Witam Mecze sie z zapytaniem wyciagajacym nazwiska z jednej tabeli, wiec prosze o pomoc.
Jest bazie tabela OSOBY a w niej wiersz NAZWISKA (z tym, ze sa tam nazwiska pracownikow oraz klientow), chcialbym wyciagnac nazwisko sprzedawcy oraz przyporzadkowane do niego nazwiska klientow, jest to mozliwe ? Jezeli tak to w jaki sposob mozna to zrobic ?
P.S. Sa jeszcze cztery tabele polaczone kluczami obcymi z ta tabela OSOBY.
-- Pozdrawiam
jacek - 01-02-2007 00:07
Daj przyklad danych, bo nic z tego nie wynika. Nazwisko pracownika, klienta, sprzedawcy...
LprzemekL - 01-02-2007 00:07
On 31 Sty, 12:34, jacek <a...@moj.pl> wrote: > Daj przyklad danych, bo nic z tego nie wynika. > Nazwisko pracownika, klienta, sprzedawcy...
Witam Z tabeli OSOBY: Id_osoby - 1, Nazwisko - Kowalski.
Z tabeli PRACOWNICY: Id_pracownika - 4, Stanowisko - Sprzedawca, Id_osoby - 1 (foreign key).
Z tabeli SPRZEDAWCY: Id_sprzedawcy - 2, Id_pracownika - 4 (foreign key), Id_miejscowosci - 2 (foreign key).
Z tabeli MIEJSCOWOSC: Id_miejscowosci - 2,
Z tablei KLIENCI: Id_klienta - 1, Id_osoby - 12 (foreign key), Id_miejscowosci - 2 (foreign key).
I teraz po wyswietleniu Id_osoby (12) z tabeli OSOBY uzyskuje nazwisko Wisniewski. Czyli sprzedawca Kowalski sprzedal produkt Wisniewskiemu, ale chcialbym podkreslic, ze sprzedawca Kowalski moze sprzedac produkt wielu klientom (nie tylko Wisniewskiemu), chcialbym rowniez wiedziec jak i to wyswietlic ?
P.S. Mecze sie z tym juz kilka dni :-(
-- Pozdrawiam
jacek - 01-02-2007 00:07
Czegos nie jarze... brak tabeli sprzedaz, w ktorej bylaby zapisywana sprzedaz: id_sprzedazy, id_sprzedawcy, id_klienta. Bo chyba o to ci nie chodzilo.
SELECT osoby.nazwisko, miejscowosci.nazwa, pracownicy.Stanowisko FROM pracownicy INNER JOIN osoby ON pracownicy.id_osoby = osoby.id_osoby INNER JOIN sprzedawcy ON pracownicy.id_pracownika = sprzedawcy.id_pracownika INNER JOIN miejscowosci ON sprzedawcy.id_miejscowosci = miejscowosci.id_miejscowosci
LprzemekL - 01-02-2007 00:07
On 31 Sty, 14:25, jacek <a...@moj.pl> wrote: > Czegos nie jarze... brak tabeli sprzedaz, w ktorej bylaby zapisywana > sprzedaz: > id_sprzedazy, id_sprzedawcy, id_klienta. > Bo chyba o to ci nie chodzilo. > > SELECT osoby.nazwisko, miejscowosci.nazwa, pracownicy.Stanowisko > FROM pracownicy INNER JOIN osoby ON pracownicy.id_osoby = osoby.id_osoby > INNER JOIN sprzedawcy ON pracownicy.id_pracownika = > sprzedawcy.id_pracownika > INNER JOIN miejscowosci ON sprzedawcy.id_miejscowosci = > miejscowosci.id_miejscowosci
Witam To co przedstawilem, to jest tylko wycinek z bazy danych. Nie wypisywalem pozostalych tabel, poniewaz nie sa potrzebne. Najwazniejsze jest dla mnie wyswietlenie obu nazwisk (caly czas o to mi chodzi), czyli nazwiska SPRZEDAWCY (ktore znajduje sie w tabeli OSOBY) oraz nazwiska KLIENTA (ktore znajduje sie rowniez w tabeli OSOBY). Twoje zapytanie nie wyswietla tego. Ja robilem to juz na rozne sposoby, np:
select osoby.nazwisko as "nazwisko sprzedawcy", osoby.nazwisko as "nazwisko klienta" from osoby, pracownicy, sprzedawcy, miejscowosci, klienci where pracownicy.id_osoby = osoby.id_osoby and sprzedawcy.id_pracownika = pracownicy.id_pracownika and sprzedawcy.id_miejscowosci = miejscowosci.id_miejscowosci and klienci.id_miejscowosci = miejscowosci.id_miejscowosci and osoby.id_osoby = klienci.id_osoby;
To powyzsze zapytanie nie wyswietla nazwisk: SPRZEDAWCY oraz KLIENTA :- ( Chodzi o wyciagniecie przypozadkowanych nazwisk z jednej tabeli.
Da sie to zrobic ?
-- Pozdrawiam
Lucyna Witkowska - 02-02-2007 00:09
LprzemekL <zubertowicz@tenbit.pl> napisał: > select > osoby.nazwisko as "nazwisko sprzedawcy", > osoby.nazwisko as "nazwisko klienta" > from osoby, pracownicy, sprzedawcy, miejscowosci, klienci > where > pracownicy.id_osoby = osoby.id_osoby and > sprzedawcy.id_pracownika = pracownicy.id_pracownika and > sprzedawcy.id_miejscowosci = miejscowosci.id_miejscowosci and > klienci.id_miejscowosci = miejscowosci.id_miejscowosci and > osoby.id_osoby = klienci.id_osoby;
> To powyzsze zapytanie nie wyswietla nazwisk: SPRZEDAWCY oraz KLIENTA :- > ( > Chodzi o wyciagniecie przypozadkowanych nazwisk z jednej tabeli.
> Da sie to zrobic ?
Da sie, tylko tabela osoby musi wystąpic dwa razy we FROM aliasowana raz jako np. osoby_sp, i drugi raz jako osoby_kl.
select osoby_sp.nazwisko as "nazwisko sprzedawcy", osoby_kl.nazwisko as "nazwisko klienta" from osoby osoby_sp, osoby osoby_kl, pracownicy, sprzedawcy, miejscowosci, klienci where pracownicy.id_osoby = osoby_sp.id_osoby and sprzedawcy.id_pracownika = pracownicy.id_pracownika and sprzedawcy.id_miejscowosci = miejscowosci.id_miejscowosci and klienci.id_miejscowosci = miejscowosci.id_miejscowosci and osoby_kl.id_osoby = klienci.id_osoby;
Pozdrowienia, LW
LprzemekL - 02-02-2007 00:09
On 1 Lut, 07:44, Lucyna Witkowska <ypwit...@nospamcyf-kr.edu.pl> wrote:
> Da sie, tylko tabela osoby musi wystąpic dwa razy we FROM aliasowana raz > jako np. osoby_sp, i drugi raz jako osoby_kl. > > select > osoby_sp.nazwisko as "nazwisko sprzedawcy", > osoby_kl.nazwisko as "nazwisko klienta" > from osoby osoby_sp, osoby osoby_kl, pracownicy, sprzedawcy, > miejscowosci, klienci > where > pracownicy.id_osoby = osoby_sp.id_osoby and > sprzedawcy.id_pracownika = pracownicy.id_pracownika and > sprzedawcy.id_miejscowosci = miejscowosci.id_miejscowosci and > klienci.id_miejscowosci = miejscowosci.id_miejscowosci and > osoby_kl.id_osoby = klienci.id_osoby;
Witam Ogromnie Tobie DZIEKUJE :-) nareszcie moge spokojnie odetchnac, uff - o to mi chodzilo - jestem dluznikiem.
A tak przy okazji zapytam o jeszcze jedno, a wiec, nie chcialbym wyswietlac wierszy jeden do jeden (czyli nazwisko sprzedawcy - nazwisko klienta, itd.), tylko wiersze jeden do wielu (czyli nazwisko sprzedawcy - nazwiska klientow, itd.), da sie tak ?
Chodzi o to aby wyswietlic sprzedawcow oraz przynalezacych do nich wielu klientow.
-- Pozdrawiam
Lucyna Witkowska - 03-02-2007 00:01
LprzemekL <zubertowicz@tenbit.pl> napisał: > > select > > osoby_sp.nazwisko as "nazwisko sprzedawcy", > > osoby_kl.nazwisko as "nazwisko klienta" > > from osoby osoby_sp, osoby osoby_kl, pracownicy, sprzedawcy, > > miejscowosci, klienci > > where > > pracownicy.id_osoby = osoby_sp.id_osoby and > > sprzedawcy.id_pracownika = pracownicy.id_pracownika and > > sprzedawcy.id_miejscowosci = miejscowosci.id_miejscowosci and > > klienci.id_miejscowosci = miejscowosci.id_miejscowosci and > > osoby_kl.id_osoby = klienci.id_osoby;
> A tak przy okazji zapytam o jeszcze jedno, a wiec, nie chcialbym > wyswietlac wierszy jeden do jeden > (czyli nazwisko sprzedawcy - nazwisko klienta, itd.), tylko wiersze > jeden do wielu (czyli nazwisko sprzedawcy - nazwiska klientow, itd.), > da sie tak ? > Chodzi o to aby wyswietlic sprzedawcow oraz przynalezacych do nich > wielu klientow.
Jesli kilenci musza byc w jednej linijce to trzeba by sie troche napracowac, jesli nie muszą to w sqlplusie wystarczy ustawic: break on "nazwisko sprzedawcy" a w zapytaniu dodac uporządkowanie: ORDER BY "nazwisko sprzedawcy","nazwisko klienta"
Pozdrowienia, LW
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
=?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
[newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
zanotowane.pldoc.pisz.plpdf.pisz.ploefg.opx.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 |
|