Tadeusz Jonczyk

Tadeusz Jonczyk specjalista /
serwisant, Timtech

Temat: Dwie bazy kilka warunków.

Mam dziwny problem ,na który dotychczas nikt nie potrafił odpowiedzieć. Pewnie pytałem nie tak jak trzeba??
Dla uproszenie pierwsza baza nazwisko i pesel, druga pesel, rodzaj badania i databad.
Zadanie: Wypisz wszystkie nazwiska, które miały w danym dniu robione badanie1 i badanie2 i badanie3 przy czym badanie1,2,3 znajdują się oczywiście w różnych rekordach.
Jak wpisuję:
select * from baza1, baza2 where baza1.pesel=baza2.pesel and badanie1='pierwsze' and badanie2='drugie'
to odpowiedź jest pusta
gdy napiszę
select * from baza1, baza2 where baza1.pesel=baza2.pesel and badanie1='pierwsze' or badanie2='drugie'
to system zwraca wszystkich którzy mieli robione przynajmniej jedno badanie czyli tez do kity :(
Proszę o pomoc

konto usunięte

Temat: Dwie bazy kilka warunków.

a tak


select * from baza1 where exists (select top 1 1 from baza2 where pesel = pesel and badanie1 = 'pierwsze' and badanie2 = 'drugie')
Maciej T.

Maciej T.
====================
============

Temat: Dwie bazy kilka warunków.

w T-SQL napisałbym tak:

Declare
@databad date

Select nazwisko from
tabela1 t1 join tabela2 t2 on t1.pesel = t2.pesel
where databad = @databad
and rodzajbadania in(badanie1,badanie2,badaie3)

lub na konkretnych danych
SQL Server

Select nazwisko from
tabela1 t1 join tabela2 t2 on t1.pesel = t2.pesel
where databad = '20121116'
and rodzajbadania in(badanie1,badanie2,badaie3)Maciej Tomaszewski edytował(a) ten post dnia 16.11.12 o godzinie 19:44
Kamil N.

Kamil N. Expert of Microsoft
SQL Server, Business
Intelligence & D...

Temat: Dwie bazy kilka warunków.

Maciej, Twoje zapytanie zwróci dane nawet gdy pacjent skorzystał tylko z jednego badania. Autorowi chodziło o wszystkie trzy.
Maciej T.

Maciej T.
====================
============

Temat: Dwie bazy kilka warunków.

Kamil Nowiński:
Maciej, Twoje zapytanie zwróci dane nawet gdy pacjent skorzystał tylko z jednego badania. Autorowi chodziło o wszystkie trzy.

Słusznie.... starość nie radość, chyba muszę się już wybrać też na badania :-)
No to zakładając, że występują 3 rodzaje badań:

SELECT osoby.nazwisko
FROM badania INNER JOIN osoby ON badania.pesel = osoby.pesel
WHERE (badania.databad='2012-11-19')
GROUP by osoby.Nazwisko
HAVING COUNT (badania.rodzajbadania)=3

ew. zdejmując ograniczenie na znajomość ilości rodzajów badań - czy, że pacjent miał wszystkie jak potrzeba :-)

SELECT osoby.nazwisko
FROM badania INNER JOIN osoby ON badania.pesel = osoby.pesel
WHERE (badania.databad='2012-11-19')
GROUP by osoby.Nazwisko
HAVING COUNT (badania.rodzajbadania)= (Select COUNT (rodzajbadania) FROM (SELECT distinct rodzajbadania from badania))Maciej Tomaszewski edytował(a) ten post dnia 19.11.12 o godzinie 10:54
Tadeusz Jonczyk

Tadeusz Jonczyk specjalista /
serwisant, Timtech

Temat: Dwie bazy kilka warunków.

Sprawdziłem - znowu ten 'or'. Wyrzuca mi pacjentów którzy w danym dniu mieli przynajmniej jedno z tych badań...

konto usunięte

Temat: Dwie bazy kilka warunków.


wrzuć jakiś zrzucik ekranu z sql menagment dla których zachodzi wymagana przez Ciebie zależność...
Maciej T.

Maciej T.
====================
============

Temat: Dwie bazy kilka warunków.

Tadeusz - daj znać czy rozwiązanie zmodyfikowane 3 posty wyżej łapie się w kryteria wymagań.Maciej Tomaszewski edytował(a) ten post dnia 19.11.12 o godzinie 10:56

Następna dyskusja:

Strumieniowe Bazy Danych




Wyślij zaproszenie do