ďťż
 
Zapytanie SQL o wyciagniecie danych z tej samej tabeli ďťż
 
Zapytanie SQL o wyciagniecie danych z tej samej tabeli
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • oefg.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com