Skonstruowanie zapytania SQL do bazy Access - chyba proste
Damian majewski - 23-01-2007 00:00
Skonstruowanie zapytania SQL do bazy Access - chyba proste
Witam serdecznie,
mam problem gdyż nie wiem jak skonstruować zapytanie do bazy. Mam dwie tabele - Towary i Magazyny kolumny w Tabeli towary to: id, Nazwa, id_mag1, id_mag2
kolumny w tabeli Magazyny to: id, Nazwa
Chodzi o to żeby do towaru przypisać dwa magazyny poprzez wpisanie id magazynu w id_mag1 i id_mag2.
czyli dane w tabeli wyglądają tak: 1, Chleb, 1, 2 2, Masło, 1, 4 itp.
a w wyniku zapytania muszę otrzymać w dwóch ostatnich kolumnach nazwy tych magazynów - niby proste a nie mogę sobie poradzić.
Zatem będę wdzięczny za wszelkie wskazówki.
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
jacek - 23-01-2007 00:00
Polecam kreator kwerend.
Piotr Kulinski - 23-01-2007 00:01
Damian majewski naskrobał(a) co następuje:
> Witam serdecznie, > > mam problem gdyż nie wiem jak skonstruować zapytanie do bazy. > Mam dwie tabele - Towary i Magazyny > kolumny w Tabeli towary to: > id, Nazwa, id_mag1, id_mag2 > > kolumny w tabeli Magazyny to: > id, Nazwa > > Chodzi o to żeby do towaru przypisać dwa magazyny poprzez wpisanie id > magazynu w id_mag1 i id_mag2. > > czyli dane w tabeli wyglądają tak: > 1, Chleb, 1, 2 > 2, Masło, 1, 4 > itp. > > a w wyniku zapytania muszę otrzymać w dwóch ostatnich kolumnach nazwy > tych magazynów - niby proste a nie mogę sobie poradzić. > > Zatem będę wdzięczny za wszelkie wskazówki. > select *,M1.Nazwa,M2.nazwa from towary T left join magazyny M1 on M1.id=T.id_mag1 left join magazyny M2 on M2.id=T.id_mag2 order by T.nazwa;
np. tak ale moim zdaniem jest to zła konstrukcja bazy
-- pozdrawiam, GG i SkyPe w X-nagłówku posta, e-mail: zmień "wpw" na "wp" piotr "Nie ma tego złego co by na dobre nie wyszło"
jacek - 23-01-2007 00:01
Dnia Mon, 22 Jan 2007 12:53:02 +0100, Piotr Kulinski napisał(a):
> Damian majewski naskrobał(a) co następuje: > >> Witam serdecznie, >> >> mam problem gdyż nie wiem jak skonstruować zapytanie do bazy. >> Mam dwie tabele - Towary i Magazyny >> kolumny w Tabeli towary to: >> id, Nazwa, id_mag1, id_mag2 >> >> kolumny w tabeli Magazyny to: >> id, Nazwa >> >> Chodzi o to żeby do towaru przypisać dwa magazyny poprzez wpisanie id >> magazynu w id_mag1 i id_mag2. >> >> czyli dane w tabeli wyglądają tak: >> 1, Chleb, 1, 2 >> 2, Masło, 1, 4 >> itp. >> >> a w wyniku zapytania muszę otrzymać w dwóch ostatnich kolumnach nazwy >> tych magazynów - niby proste a nie mogę sobie poradzić. >> >> Zatem będę wdzięczny za wszelkie wskazówki. >> > select *,M1.Nazwa,M2.nazwa > from towary T > left join magazyny M1 on M1.id=T.id_mag1 > left join magazyny M2 on M2.id=T.id_mag2 > order by T.nazwa; > > np. tak > ale moim zdaniem jest to zła konstrukcja bazy
Bo powinna np. wygladac tak:
tblTowary - id_Towaru, nazwa tblMagazyn - id_Magazynu, nazwa, tblStan - id, id_Magazynu, id_Towaru, stan
Wtedy widac w jakim magazynie ile jest jakiego towaru.
Damian majewski - 23-01-2007 00:01
jacek <adres@moj.pl> napisał(a):
> Dnia Mon, 22 Jan 2007 12:53:02 +0100, Piotr Kulinski napisał(a): > > > Damian majewski naskrobał(a) co następuje: > > > >> Witam serdecznie, > >> > >> mam problem gdyż nie wiem jak skonstruować zapytanie do bazy. > >> Mam dwie tabele - Towary i Magazyny > >> kolumny w Tabeli towary to: > >> id, Nazwa, id_mag1, id_mag2 > >> > >> kolumny w tabeli Magazyny to: > >> id, Nazwa > >> > >> Chodzi o to żeby do towaru przypisać dwa magazyny poprzez wpisanie id > >> magazynu w id_mag1 i id_mag2. > >> > >> czyli dane w tabeli wyglądają tak: > >> 1, Chleb, 1, 2 > >> 2, Masło, 1, 4 > >> itp. > >> > >> a w wyniku zapytania muszę otrzymać w dwóch ostatnich kolumnach nazwy > >> tych magazynów - niby proste a nie mogę sobie poradzić. > >> > >> Zatem będę wdzięczny za wszelkie wskazówki. > >> > > select *,M1.Nazwa,M2.nazwa > > from towary T > > left join magazyny M1 on M1.id=T.id_mag1 > > left join magazyny M2 on M2.id=T.id_mag2 > > order by T.nazwa; > > > > np. tak > > ale moim zdaniem jest to zła konstrukcja bazy > > Bo powinna np. wygladac tak: > > tblTowary - id_Towaru, nazwa > tblMagazyn - id_Magazynu, nazwa, > tblStan - id, id_Magazynu, id_Towaru, stan >
Oczywiście, że macie racje ale nie ja tę bazę zaprojektowałem. Chodzi o dopisanie tylko dwóch magazynów do towaru coś na zasadzie magazyn wejściowy i magazyn wyjściowy. Też rozwiązałbym tę konstrukcję inaczej ale narazie muszę wyciągnąć jednym zapytaniem towar.nazwa, magazyn1.nazwa, magazyn2.nazwa.
Ciekawostka jest taka że w bazie Comarchu w CDN.Optima też jest taki problem. Poniekąd ta baza jest przez kogoś stworzona na bazie normalizacji z temtej
> > select *,M1.Nazwa,M2.nazwa > > from towary T > > left join magazyny M1 on M1.id=T.id_mag1 > > left join magazyny M2 on M2.id=T.id_mag2 > > order by T.nazwa;
powyższe zapytanie nie działa - zresztą nie bardzo wiem dlaczego jest w nim dwa razy left join?? Zatem dalej prosze o pomoc za którą z góry dziękuję.
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Piotr Kulinski - 23-01-2007 00:01
Damian majewski naskrobał(a) co następuje:
[...] >> > select *,M1.Nazwa,M2.nazwa >> > from towary T >> > left join magazyny M1 on M1.id=T.id_mag1 >> > left join magazyny M2 on M2.id=T.id_mag2 >> > order by T.nazwa; > > powyższe zapytanie nie działa - zresztą nie bardzo wiem dlaczego jest w > nim dwa razy left join?? Zatem dalej prosze o pomoc za którą z góry > dziękuję. >
dlatego że raz łączysz po polu id_mag1, a drugi raz po polu id_mag2 sprawdź dokładnie czy przepisałeś tak jak podałem?
-- pozdrawiam, GG i SkyPe w X-nagłówku posta, e-mail: zmień "wpw" na "wp" piotr "Nic nie stoi na przeszkodzie, co by przeszkody sobie nie stworzyć :)"
Damian majewski - 23-01-2007 00:01
Piotr Kulinski <piotr_kulinski@wpw.pl> napisał(a):
> Damian majewski naskrobał(a) co następuje: > > [...] > >> > select *,M1.Nazwa,M2.nazwa > >> > from towary T > >> > left join magazyny M1 on M1.id=T.id_mag1 > >> > left join magazyny M2 on M2.id=T.id_mag2 > >> > order by T.nazwa; > > > > powyższe zapytanie nie działa - zresztą nie bardzo wiem dlaczego jest w > > nim dwa razy left join?? Zatem dalej prosze o pomoc za którą z góry > > dziękuję. > > > > dlatego że raz łączysz po polu id_mag1, a drugi raz po polu id_mag2 > sprawdź dokładnie czy przepisałeś tak jak podałem? > Wyskakuje mi komunikat 'Błąd składniowy (brak operatora) w wyrażeniu kwerendy 'M1.id = T.id_mag1 left join magazyny M2 on M2.id = T.id_mag2'
Wklejam to co wkleiłem do kwerendy: select *,M1.Nazwa, M2.nazwa from towary T left join magazyny M1 on M1.id=T.id_mag1 left join magazyny M2 on M2.id=T.id_mag2 order by T.nazwa;
?????????????????????????????????????????
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Piotr Kulinski - 23-01-2007 00:01
Damian majewski naskrobał(a) co następuje:
> Piotr Kulinski <piotr_kulinski@wpw.pl> napisał(a): > >> Damian majewski naskrobał(a) co następuje: >> >> [...] >> >> > select *,M1.Nazwa,M2.nazwa >> >> > from towary T >> >> > left join magazyny M1 on M1.id=T.id_mag1 >> >> > left join magazyny M2 on M2.id=T.id_mag2 >> >> > order by T.nazwa; >> > >> > powyższe zapytanie nie działa - zresztą nie bardzo wiem dlaczego jest >> > w nim dwa razy left join?? Zatem dalej prosze o pomoc za którą z góry >> > dziękuję. >> > >> >> dlatego że raz łączysz po polu id_mag1, a drugi raz po polu id_mag2 >> sprawdź dokładnie czy przepisałeś tak jak podałem? >> > Wyskakuje mi komunikat 'Błąd składniowy (brak operatora) w wyrażeniu > kwerendy 'M1.id = T.id_mag1 left join magazyny M2 on M2.id = T.id_mag2' > > Wklejam to co wkleiłem do kwerendy: > select *,M1.Nazwa, M2.nazwa > from towary T > left join magazyny M1 on M1.id=T.id_mag1 > left join magazyny M2 on M2.id=T.id_mag2 > order by T.nazwa; > > ????????????????????????????????????????? >
może wprowadziłem w błąd, konstrukcja zapytania pracuje pod MySQL w access głowy sobie nie dam uciąć :) Próbowałeś zmieniać akronimy np M1 na A M2 na B ?, może przyjmuje w uszach 'A'.'id_mag1' ? Sprawdzę później na Access-ie
-- pozdrawiam, GG i SkyPe w X-nagłówku posta, e-mail: zmień "wpw" na "wp" piotr "Nie ma tego złego co by na dobre nie wyszło"
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?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[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.plred-hacjenda.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 |
|