SQL nahradzovanie pri vazbe 1:N

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

zdravim. viem, ze to nie je dotaz na nette, ale aj tak, ak by mi nejaky nette/sql guru mohol poradit, bolo by to super.

mam tabulku A s id,… a tabulku B s id,a_id,…
tabulky su vo vztahu 1:N, pricom zaznamy z B maju parenta z A podla a_id.
konkretne sa jedna o skupiny a polozky (vyrobky), ktore do nej patria.

predstavte si situaciu, kde niektora polozka z B sa musi nahradit nejakou inou polozkou z B (napr. tovar nie je na sklade, treba ho nahradit). preto vznikla tabulka C s b_id1 a b_id2 kde tieto dve id stlpce urcuju, ktory produkt sa za ktory ma nahradit.

teraz, ak mam SQL dotaz, ktory vybera z A s vazbou na B

SELECT a.*,b.* FROM A a JOIN B b ON b.a_id = a.id WHERE ...

akym sposobom mozem spravit vyber, kde nahradim nejaky konkretny vyrobok z B za iny podla C, aby to bolo transparentne pre presenter ? t.j. v jednom dotaze

potrebujem to iste vyriesit aj pre selecty, kde sa pouzivaju agregacne funkcie, ktore pocitaju napr. cenu vyrobkov v danej kategorii …

diky moc

voda
Člen | 561
+
0
-

Zkus UNION

SELECT a.*, b.* FROM a JOIN b WHERE 'výrobky které se nebudou nahrazovat'
UNION
SELECT a.*, b.* FROM a JOIN c JOIN b WHERE 'výrobky které se budou nahrazovat'
xr
Člen | 94
+
0
-

super, dakujem! toto ma mohlo napadnut veru…