Ho una query SQL con lo stesso codice esatto, ma due tabelle diverse (AUDIT_TRAIL_ARCHIVE e AUDIT_TRAIL). Io uso "UNION ALL" per avere un risultato.Non ripetersi: stessa query SQL, ma due tabelle diverse
I buoni programmatori usano il principio "Don't repeat yourself". I bravi programmatori evitano WET (scrivono tutto due volte).
Come riscrivere questo codice con il principio "Non ripetere te stesso"?
SELECT REPLACE (ENTITY_KEY, 'rss_user_name=CN=', '')
FROM AUDIT_TRAIL_ARCHIVE AU
INNER JOIN
(SELECT RSS_USER_NAME
FROM RSS_USER
WHERE RSS_NAME = 'rmad'
AND ADD_INFO_MASTER LIKE '%__47__UPN=%@richemont.com%') FALSCH
ON REPLACE (AU.ENTITY_KEY, 'rss_user_name=CN=', '') =
FALSCH.RSS_USER_NAME
WHERE AU.RSS_NAME = 'rmad'
AND AU.TABLE_NAME = 'rss_user'
AND AU.ACTION = 'Insert'
AND AU.ENTITY_KEY LIKE 'rss_user_name=CN=%'
AND AU.ORIGIN != 'RSS'
UNION ALL
SELECT REPLACE (ENTITY_KEY, 'rss_user_name=CN=', '')
FROM AUDIT_TRAIL AU
INNER JOIN
(SELECT RSS_USER_NAME
FROM RSS_USER
WHERE RSS_NAME = 'rmad'
AND ADD_INFO_MASTER LIKE '%__47__UPN=%@richemont.com%') FALSCH
ON REPLACE (AU.ENTITY_KEY, 'rss_user_name=CN=', '') =
FALSCH.RSS_USER_NAME
WHERE AU.RSS_NAME = 'rmad'
AND AU.TABLE_NAME = 'rss_user'
AND AU.ACTION = 'Insert'
AND AU.ENTITY_KEY LIKE 'rss_user_name=CN=%'
AND AU.ORIGIN != 'RSS'
Qual è il tuo obiettivo qui: utilizzare SQL dinamico, ad es. stesso sql ma diff. tabelle o riscrivi la query come nell'esempio di Florin? – Art
@ fyodor78 La prima soluzione non è sempre la migliore. Naturalmente puoi unirti alle tabelle PRIMA di selezionare - ma perché dovresti costruire una tabella temporanea di 100.000 righe, quando vuoi recuperare una riga da ciascuna? Vedere in SQL dinamico, creare una procedura, creare una stringa di query e riutilizzare tale procedura. – dognose