Autor Zpráva
DSL
Profil *
Ahoj, potřeboval bych poradit. ten titulek je možná trochu zavádějící, ale nevěděl jsem jak jinak to vysvětlit.
Mám následující databázi:
pacienti(rc, jmeno, prijmeni)
pacienti_lekari(rc, lekar_jmeno, lekar_prijmeni, specializace)

a data:
pacienti_lekari:
11, pepa, dvorak, orl
12, karel, novak, chirurg,
11, karel, novak, chirurg

a chci dotaz, který mi vypíše pouze pacienty, kteří nikdy nebyli na orl:
select rc, jmeno, prijmeni from pacienti_lekari as pl
join pacienti as p on p.rc = pl.rc
where pl.specializace != 'orl'
jenomže tento dotaz mi odfiltruje pouze záznamy kde je orl, takže ve výsledku dostanu oba pacienty (11, 12) a ne jenom 12.
děkuji za radu.
Kajman
Profil
Např. přes outer join...
select rc, jmeno, prijmeni from pacienti_lekari as pl
right join pacienti as p on p.rc = pl.rc and  pl.specializace = 'orl'
where pl.rc is null
DSL
Profil *
díky funguje to. a kdybych chtěl pouze pacienty kteří nebyly na orl a u ortopeda, jak by to vypadalo? zkoušel jsem
select rc, jmeno, prijmeni from pacienti_lekari as pl
right join pacienti as p on p.rc = pl.rc and  (pl.specializace = 'orl' or pl.specializace='ortoped')
where pl.rc is null
a to nefunguje
Taps
Profil
DSL:

select rc, jmeno, prijmeni from pacienti_lekari as pl
right join pacienti as p on p.rc = pl.rc and  (pl.specializace != 'orl' or pl.specializace !='ortoped')
where pl.rc is null
Kajman
Profil
DSL:
Ten dotaz z [#3] vypadá korektně (pokud pacienti nesměli být ani u jednoho z nich). Pokud to nic nevypíše, možná takový pacient není.

Taps:
To nebude ono.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: