[MySQL] Czy =?ISO-8859-2?Q?m=F3g=B3by_mi_kto=B6_pom=F3c_?==?ISO-8859-2?Q?przy_tym_zapytaniu_=3F?=
sawic - 28-02-2007 00:07
[MySQL] Czy =?ISO-8859-2?Q?m=F3g=B3by_mi_kto=B6_pom=F3c_?==?ISO-8859-2?Q?przy_tym_zapytaniu_=3F?=
Witam.
Mam takie tabele:
t1: idT1 - int opis - varchar(250) stan - smallint
t2: idT2 - int user - char(20)
Zawartość:
t1: idT1 | opis | stan ----------------- 1 | opis1 | 0 2 | opis2 | 1 3 | opis3 | 1
t2: idT2 | user ----------- 1 | user2 2 | user1 2 | user2 3 | user2
Dla konkretnego użytkownika (user) chcę wyciągnąć te wartości tb1.idT1 i tb1.opis, które to tb1.idT1 nie występuje w t2. (przy założeniu tb1.stan = '1') Czyli w wyniku tego zapytania dla user = 'user2' powinienem otrzymać jeden wynik: idT1 = 3 i opis = opis3
Próbowałem coś takiego:
select t1.id, t1.opis from tb.t1 left join tb.t2 on t1.idT1 = t2.idT2 where t1.stan = '1' and t2.idT2 is null
I to działa, ale dla jakiegkolwiek braku wystąpienia t1.idT1 = t2.idT2. A ja chciałbym uzyskać te t1.idT1 które nie występuje dla konkretnej pary idT2, user w t2.
Troche zakręciłem, ale prościej jakoś nie umiem wytłumaczyć. Mam nadzieję, że ktoś zrozumie o co mi chodziło.
Pozdrawiam
sawic - 28-02-2007 00:07
sawic napisał(a): > Czyli w wyniku tego zapytania dla user = 'user2' powinienem otrzymać > jeden wynik: idT1 = 3 i opis = opis3
*mała poprawka. Powyższy tekst powinien wyglądać:
Czyli w wyniku tego zapytania dla user = *'user1'* powinienem otrzymać jeden wynik: idT1 = 3 i opis = opis3
Cezary Zylbersztajn - 01-03-2007 00:00
=?iso-8859-2?Q?Re[2]:_[MySQL]_Czy_m=F3g=B3by_mi_kto=B6_pom=F3c_przy_tym_zapytan iu_=3F?=
Witaj sawic!
> Czyli w wyniku tego zapytania dla user = *'user1'* powinienem otrzymać > jeden wynik: idT1 = 3 i opis = opis3 W Oracle zadziałało takie cudo.
SELECT t1.* FROM t1 WHERE t1.stan = 1 AND NOT EXISTS (SELECT * FROM t2 WHERE t2.idt2 = t1.idt1 AND t2.user = 'user1' )
-- podpisal Cezary Zylbersztajn; Data: 28 lutego 2007 08:32:31
GCS/IT d- s: a C+ UU U++ L+ W+ N+ K- w+ M-- PS--- PE PGP t- 5- X-- R tv b++ DI++ D+ G e++() h---() r+++ z+++
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
sawic - 01-03-2007 00:00
Cezary Zylbersztajn napisał(a): > W Oracle zadziałało takie cudo. > > SELECT t1.* FROM t1 > WHERE t1.stan = 1 > AND NOT EXISTS (SELECT * FROM t2 > WHERE t2.idt2 = t1.idt1 > AND t2.user = 'user1' > ) >
Wielkie dzięki ! Działa.
Nie byłem nawet świadom istnienia takiej komendy.
Pozdrawiam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Gdzie MySQL 4.1, a gdzie 5.0?
[MS SQL] "set names" (mySQL) w MS SQL
oracle -> oracle lub oracle -> mysql replikacja - programy
[MySQL] Zwrot tego, co pasuje i nie pasuje :-/
[pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1
[mysql] galeria zdjec - numerowanie zdjec
[mysql] CONCAT agregujący, ale nie GROUP_CONCAT()
mysql data 0000-00-00 na koniec
[MySQL] Problem z zapisem danych w bazie danych
jak przenieesc czesc tabeli do innej tabeli MySQL
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 |
|