LEFT OUTER JOIN v. UNION
mGracz - 11-05-2007 12:31
LEFT OUTER JOIN v. UNION
Witam wszystkich,
Zastanawiam się jak zoptymalizować poniższe zapytanie bez utraty żadnych wierszy:
SELECT a.a,a.b,a.c FROM tab1 a LEFT OUTER JOIN tab2 b ON (a.quantity <0 AND b.pid = a.id) OR (a.quantity>=0 and b.rid = a.id)
W przypadku zapytania poniższego:
SELECT a.a,a.b,a.c FROM tab1 a JOIN tab2 b ON (a.quantity <0 AND b.pid = a.id) OR (a.quantity>=0 and b.rid = a.id)
w łatwy sposób możemy przerobić je na kwerendę z UNION, która wtym przypadku jest o niebo szybsza:
SELECT a.a,a.b,a.c FROM tab1 a JOIN tab2 b ON (a.quantity <0 AND b.pid = a.id) UNION SELECT a.a,a.b,a.c FROM tab1 a JOIN tab2 b ON (a.quantity>=0 and b.rid = a.id)
ale co z pierwszym przypadkiem i złączeniem LEFT OUTER JOIN.
Macie jakieś pomysły??
Dzięki z góry!!
=?iso-8859-2?q?Filip_Rembia=B3kowski?= - 11-05-2007 12:31
On 18 Kwi, 21:47, mGracz <M.Graczykow...@gmail.com> wrote:
> Zastanawiam się jak zoptymalizować poniższe zapytanie bez utraty > żadnych wierszy: > > SELECT a.a,a.b,a.c > FROM tab1 a > LEFT OUTER JOIN tab2 b ON (a.quantity <0 AND b.pid = a.id) OR > (a.quantity>=0 and b.rid = a.id)
zależy od struktury (klucze główne, klucze obce, unique)
możliwe że nawet tak: SELECT a.a,a.b,a.c FROM a
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MySQL] Wybierz tylko te rekordy z t1 =?ISO-8859-2?Q?kt=F3rych_?==?ISO-8859-2?Q?nie_ma_w_t2=2E_JOIN_=3F?=
[mysql, postgres] poprawne uzycie GROUP BY i JOIN
[MySql] pytanie o relacje, JOIN
Zapytanie na 3 tabele, JOIN itp.
dziwna sprawa z join w mysql 5.0
[sql]kolejność join'ów ma znaczenie?
wydajnosc wielokrotnych join'ów
[MySQL] zapytanie JOIN
[mysql] warunkowy inner join
JOIN i trzy tabelki
zanotowane.pldoc.pisz.plpdf.pisz.plown-team.pev.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 |
|