Selection a podmínka v LEFT JOIN ON

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Svaťa Šimara
Člen | 98
+
0
-

Zdarec,

rád bych rozvířil neformální diskuzi o left joinech. Aktuálně není v Selection podpora pro podmínku v ON.
Navazuji na pull request: https://github.com/…te/pull/1436

Je rozdíl jestli zadáte:

SELECT * FROM A
LEFT JOIN B ON (A.id = B.id_a)
WHERE B.available = 1

případně:

SELECT * FROM A
LEFT JOIN B ON (A.id = B.id_a)
WHERE B.available = 1 OR B.available IS NULL

a nebo opravdový LEFT JOIN:

SELECT * FROM A
LEFT JOIN B ON (A.id = B.id_a AND B.available = 1)

Navrhované API je přidání metody ->left(…), která funguje stejně jako ->where(…), ale podmínku přidá do ON, nicméně tím se prý zbytečně zasírá API.

Máte někdo nápad na API, které by pokrývalo zároveň aliasování tabulek a left joiny?

Editoval Fafin (28. 3. 2014 16:56)