Comment faire un SELECT de Log qui me retourne les strLibelle de chaque
table en fonction de smlEnumNumeroTable. Je trouve que faire une UNION est
pas très rigoureuse...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
Sinon tu dois pouvoir faire un "JOIN" avec toutes les tables et sans doute un SELECT compliqué mais cela me parait moins clair...
Ou une fonction utilisateur ?
Ici tu veux bien traiter deux champs de la même façon dans des tables totalement différentes donc le UNION ne me parait pas plus choquant que cela car il me semble bien exprimer le plus directement le principe de cette requête. Pour le coup c'est le JOIN qui me paraitrait "bricolé".
-- Patrice
"Mikado" a écrit dans le message de news:%
Salut à tous,
Je veux faire un table de Log pour vérifier quelques opérations sur certaines tables. En partant du principe suivante (je schématise au plus simple) :
Comment faire un SELECT de Log qui me retourne les strLibelle de chaque table en fonction de smlEnumNumeroTable. Je trouve que faire une UNION est pas très rigoureuse...
Y a t'il une solution ?
Merci
Jérôme
Sinon tu dois pouvoir faire un "JOIN" avec toutes les tables et sans doute
un SELECT compliqué mais cela me parait moins clair...
Ou une fonction utilisateur ?
Ici tu veux bien traiter deux champs de la même façon dans des tables
totalement différentes donc le UNION ne me parait pas plus choquant que cela
car il me semble bien exprimer le plus directement le principe de cette
requête. Pour le coup c'est le JOIN qui me paraitrait "bricolé".
--
Patrice
"Mikado" <Mikado@libertysurf.fr> a écrit dans le message de
news:%23f2ook1kFHA.3256@TK2MSFTNGP12.phx.gbl...
Salut à tous,
Je veux faire un table de Log pour vérifier quelques opérations sur
certaines tables. En partant du principe suivante (je schématise au plus
simple) :
Comment faire un SELECT de Log qui me retourne les strLibelle de chaque
table en fonction de smlEnumNumeroTable. Je trouve que faire une UNION est
pas très rigoureuse...
Sinon tu dois pouvoir faire un "JOIN" avec toutes les tables et sans doute un SELECT compliqué mais cela me parait moins clair...
Ou une fonction utilisateur ?
Ici tu veux bien traiter deux champs de la même façon dans des tables totalement différentes donc le UNION ne me parait pas plus choquant que cela car il me semble bien exprimer le plus directement le principe de cette requête. Pour le coup c'est le JOIN qui me paraitrait "bricolé".
-- Patrice
"Mikado" a écrit dans le message de news:%
Salut à tous,
Je veux faire un table de Log pour vérifier quelques opérations sur certaines tables. En partant du principe suivante (je schématise au plus simple) :
Comment faire un SELECT de Log qui me retourne les strLibelle de chaque table en fonction de smlEnumNumeroTable. Je trouve que faire une UNION est pas très rigoureuse...
Y a t'il une solution ?
Merci
Jérôme
TLE91
Bonjour,
Une solution possible : Select coalesce((Select strLibelle FROM Table1 Where IdTable1= smlEnumNumeroTable), (Select strLibelle FROM Table2 Where IdTable2= smlEnumNumeroTable), (Select strLibelle FROM Table3 Where IdTable3= smlEnumNumeroTable), 'Inconnu') , smlEnumAction, dtmDateModification FROM Log
Le problème c'est que pour gérer une 4ème table il faut modifier le code. Une solution dynamique me semble difficile.
Petite remarque : il faut faire attention avec votre modèle car il faut garantir que le IdTable1, IdTable2 et IdTable3 soint tous différents. Sinon, la logique de récupération du strLibelle ne fonctionne pas !!!
Comment faire un SELECT de Log qui me retourne les strLibelle de chaque table en fonction de smlEnumNumeroTable. Je trouve que faire une UNION est pas très rigoureuse...
Y a t'il une solution ?
Merci
Jérôme
Bonjour,
Une solution possible :
Select
coalesce((Select strLibelle FROM Table1 Where IdTable1= smlEnumNumeroTable),
(Select strLibelle FROM Table2 Where IdTable2=
smlEnumNumeroTable),
(Select strLibelle FROM Table3 Where IdTable3=
smlEnumNumeroTable),
'Inconnu')
, smlEnumAction, dtmDateModification
FROM Log
Le problème c'est que pour gérer une 4ème table il faut modifier le code.
Une solution dynamique me semble difficile.
Petite remarque : il faut faire attention avec votre modèle car il faut
garantir que le IdTable1, IdTable2 et IdTable3 soint tous différents. Sinon,
la logique de récupération du strLibelle ne fonctionne pas !!!
Comment faire un SELECT de Log qui me retourne les strLibelle de chaque
table en fonction de smlEnumNumeroTable. Je trouve que faire une UNION est
pas très rigoureuse...
Une solution possible : Select coalesce((Select strLibelle FROM Table1 Where IdTable1= smlEnumNumeroTable), (Select strLibelle FROM Table2 Where IdTable2= smlEnumNumeroTable), (Select strLibelle FROM Table3 Where IdTable3= smlEnumNumeroTable), 'Inconnu') , smlEnumAction, dtmDateModification FROM Log
Le problème c'est que pour gérer une 4ème table il faut modifier le code. Une solution dynamique me semble difficile.
Petite remarque : il faut faire attention avec votre modèle car il faut garantir que le IdTable1, IdTable2 et IdTable3 soint tous différents. Sinon, la logique de récupération du strLibelle ne fonctionne pas !!!
Comment faire un SELECT de Log qui me retourne les strLibelle de chaque table en fonction de smlEnumNumeroTable. Je trouve que faire une UNION est pas très rigoureuse...