Aynı kodla bir SQL sorgum var, ancak iki farklı tablo (AUDIT_TRAIL_ARCHIVE ve AUDIT_TRAIL). Bir sonuca sahip olmak için "UNION ALL" kullanıyorum.Kendiniz tekrarlama: aynı SQL sorgusu, ancak iki farklı tablo
İyi programcılar "Don't repeat yourself" ilkesini kullanır. İyi programcılar WET'ten kaçınıyor (her şeyi iki kez yaz).
Bu kodu "Kendiniz tekrar etmeyin" ilkesiyle nasıl yeniden yazabilirsiniz? Örneğin
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'
Hedefiniz burada: dinamik sql'yi kullanmak, ör. aynı sql ancak farklı. tabloları veya Florin örneğinde olduğu gibi sorguyu yeniden yazmak? – Art
@ fyodor78 İlk çözüm her zaman en iyisi değil. Tabii ki Seçmeden ÖNCE tablolara katılabilirsiniz - fakat her birini bir sıra almak istediğinizde neden 100.000 satırlık geçici bir tablo oluşturursunuz? Dinamik SQL'de bakın, bir prosedür oluşturun, bir sorgu dizgisi oluşturun ve bu prosedürü tekrar kullanın. – dognose