[MS SQL] Zapytanie wyswietlajace (lub nie) adresy na podstawie warunku
Mariusz M. - 04-09-2007 00:08
[MS SQL] Zapytanie wyswietlajace (lub nie) adresy na podstawie warunku Witam. Prosze o pomoc :)
Zapytanie ma dzialac nastepujaco:
Jeśli do danej osoby jest przypisany drugi adres to zapytanie ma wyświetlić właśnie drugi, pierwszego w ogóle nie wyswietlajac.
Nie mam pomyslu, probowalem z select case ale nie wiem jak tam wstawic warunek sprawdzania numeru adresu.
Struktura tabel
tab.id --dodane tylko dla zobrazowania problemu tab.NumerAdresu --dodane tylko dla zobrazowania problemu tab.kod_pocztowy, tab.miasto, tab.ulica, tab.adres tab2.dopisek
FROM tab1, tab2
where tab1.id = tab2.id
Wynik polecenia
1. 1001|1|87-800.|Wloclawek|Miodowa....|24........|Kowalski 2. 1001|2|NULL..|NULL.......|NULL.........|NULL..|NUL L 3. 1002|1|04-371.|Warszawa.|Kobielska....|31........|Jurkowska 4. 1002|2|NULL..|NULL.......|NULL.........|NULL..|NUL L 5. 1003|1|04-371.|Warszawa.|Grochowska|15........|Zielinski 6. 1003|2|03-415.|Warszawa.|Puławska.....|21........|NULL
Je chce oczywiscie bez wierszy z polami null oraz zamiast wiersza 5 wiersz 6.
Czyli ma byc cos takiego:
IF tab.NumerAdresu=2 AND tab.miasto IS NOT NULL WYSWIETL wiersz w ktorym NumerAdresu = 2
ELSE WYSWIETL wiersz w ktorym NumerAdresu = 1
Macie jakies pomysly?
Mariusz
Sylwester Lewandowski - 04-09-2007 00:08
Hej,
Może tak:
SELECT A.street, P.fname,A.addressNr FROM Addresses A INNER JOIN Persons P ON P.pID = A.pID WHERE A.addressNr = 2 UNION ALL SELECT A.street, P1.fname,A.addressNr FROM Addresses A INNER JOIN Persons P1 ON P1.pID = A.pID WHERE A.addressNr = 1 AND NOT EXISTS (SELECT * FROM Addresses A INNER JOIN Persons P2 ON P2.pID = A.pID WHERE A.addressNr = 2 AND P1.pID = P2.pID)
Pozdr.
Mariusz M. pisze: > Witam. Prosze o pomoc :) > > > Zapytanie ma dzialac nastepujaco: > > Jeśli do danej osoby jest przypisany drugi adres to zapytanie ma wyświetlić > właśnie drugi, pierwszego w ogóle nie wyswietlajac. > > Nie mam pomyslu, probowalem z select case ale nie wiem jak tam wstawic > warunek sprawdzania numeru adresu. > > Struktura tabel > > tab.id --dodane tylko dla zobrazowania problemu > tab.NumerAdresu --dodane tylko dla zobrazowania problemu > tab.kod_pocztowy, > tab.miasto, > tab.ulica, > tab.adres > tab2.dopisek > > FROM > tab1, tab2 > > where > tab1.id = tab2.id > > > Wynik polecenia > > 1. 1001|1|87-800.|Wloclawek|Miodowa....|24........|Kowalski > 2. 1001|2|NULL..|NULL.......|NULL.........|NULL..|NUL L > 3. 1002|1|04-371.|Warszawa.|Kobielska....|31........|Jurkowska > 4. 1002|2|NULL..|NULL.......|NULL.........|NULL..|NUL L > 5. 1003|1|04-371.|Warszawa.|Grochowska|15........|Zielinski > 6. 1003|2|03-415.|Warszawa.|Puławska.....|21........|NULL > > Je chce oczywiscie bez wierszy z polami null oraz zamiast wiersza 5 wiersz > 6. > > > Czyli ma byc cos takiego: > > IF tab.NumerAdresu=2 AND tab.miasto IS NOT NULL > WYSWIETL wiersz w ktorym NumerAdresu = 2 > > ELSE > WYSWIETL wiersz w ktorym NumerAdresu = 1 > > > Macie jakies pomysly? > > Mariusz > >
Mariusz M. - 08-09-2007 00:05
Użytkownik "Sylwester Lewandowski" <camlan_remove_@vp.pl> napisał w wiadomości news:fbh9oo$3tc$1@atlantis.news.tpi.pl... > Hej, > > Może tak: > > SELECT A.street, P.fname,A.addressNr > FROM Addresses A
Dzieki ogromne :)
-- Pozdrawiam Mariusz
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?_?=
=?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?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[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?=
phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?=
[oracle] - Oracle SQL Developer - co to jest SID?
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.plfantazia.htw.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 |
|