Bonjour à tous,
ma question du jour est la suivante :
Soit une table (tab1) contenant :
- Magasin (mag)
- code produit (codpro)
- Description (descript)
soit une autre table (tab2) contenant :
- Magasin (mag)
- Code produit (codpro)
- Analyse A (analisA)
- Analyse B (analisB)
et une 3eme table (tab3) contenant :
- Magasin (mag)
- Code produit (codpro)
- Analyse A (analisA)
- Analyse B (analisB)
Mon robleme est le suivant
Pour tous les produit commencant par 'A', je veux recuperer les 2 codes
analyse de la table 2, et si ces codes sont vide, dans ce cas ce sont
les codes analyse de la table 3 que je dois recuperer ...
Je n'arrive pas a le coder en une requete ...
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
GLB
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description , CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END , CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Non testé
A+ Gilles
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description
, CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END
, CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END
from tab1
left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag
left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag
Where t1.description like 'A%'
select t1.mag, t1.codpro, t1.description , CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END , CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Non testé
A+ Gilles
jeje
"GLB" a écrit dans le message de news:
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description , CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END , CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Plus simple à écrire et qui devrait fonctionner également :
select t1.mag, t1.codpro, t1.description, coalesce(t2.AnalisA, t3.AnalisA), coalesce(t2.AnalisB, t3.AnalisB) from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Non testé
Non plus ;-) -- Jérôme
"GLB" <Supprimer_ceci_glebarbier@segilog.com> a écrit dans le message de
news: uz0n9hLNHHA.3668@TK2MSFTNGP02.phx.gbl...
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description
, CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA
END
, CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB
END
from tab1
left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag
left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag
Where t1.description like 'A%'
Plus simple à écrire et qui devrait fonctionner également :
select t1.mag, t1.codpro, t1.description, coalesce(t2.AnalisA,
t3.AnalisA), coalesce(t2.AnalisB, t3.AnalisB)
from tab1
left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag
left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag
Where t1.description like 'A%'
select t1.mag, t1.codpro, t1.description , CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END , CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Plus simple à écrire et qui devrait fonctionner également :
select t1.mag, t1.codpro, t1.description, coalesce(t2.AnalisA, t3.AnalisA), coalesce(t2.AnalisB, t3.AnalisB) from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Non testé
Non plus ;-) -- Jérôme
SuperGolgoth
Excellent, mais ... les zones 'vide' ne sont pas null ... elles sont vide ( = '' ) Merci quand meme, je ne connaissais pas cette fonction. ca va me reservir
jeje avait prétendu :
"GLB" a écrit dans le message de news:
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description , CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END , CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Plus simple à écrire et qui devrait fonctionner également :
select t1.mag, t1.codpro, t1.description, coalesce(t2.AnalisA, t3.AnalisA), coalesce(t2.AnalisB, t3.AnalisB) from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Non testé
Non plus ;-)
Excellent, mais ...
les zones 'vide' ne sont pas null ... elles sont vide ( = '' )
Merci quand meme, je ne connaissais pas cette fonction. ca va me
reservir
jeje avait prétendu :
"GLB" <Supprimer_ceci_glebarbier@segilog.com> a écrit dans le message de
news: uz0n9hLNHHA.3668@TK2MSFTNGP02.phx.gbl...
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description
, CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END
, CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END
from tab1
left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag
left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag
Where t1.description like 'A%'
Plus simple à écrire et qui devrait fonctionner également :
select t1.mag, t1.codpro, t1.description, coalesce(t2.AnalisA, t3.AnalisA),
coalesce(t2.AnalisB, t3.AnalisB)
from tab1
left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag
left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag
Where t1.description like 'A%'
Excellent, mais ... les zones 'vide' ne sont pas null ... elles sont vide ( = '' ) Merci quand meme, je ne connaissais pas cette fonction. ca va me reservir
jeje avait prétendu :
"GLB" a écrit dans le message de news:
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description , CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END , CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Plus simple à écrire et qui devrait fonctionner également :
select t1.mag, t1.codpro, t1.description, coalesce(t2.AnalisA, t3.AnalisA), coalesce(t2.AnalisB, t3.AnalisB) from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Non testé
Non plus ;-)
GLB
Bonjour et merci jeje,
je ne voyais pas l'utilisation de cette fonction et en fin de compte j'utilisais toujour les case pour arriver a mes fins :-)
ortographe non testé :-)
A+
Gilles
PS donc ma première requete fontionne en remplaçant les " isnull(...)" par des "t2.AnalisA = ""
Bonjour
et merci jeje,
je ne voyais pas l'utilisation de cette fonction et en fin de compte
j'utilisais toujour les case pour arriver a mes fins :-)
ortographe non testé :-)
A+
Gilles
PS donc ma première requete fontionne
en remplaçant les " isnull(...)" par des "t2.AnalisA = ""
Excellent, mais ... les zones 'vide' ne sont pas null ... elles sont vide ( = '' )
Dans ce cas, la soluce de GLB est à retenir alors.
Merci quand meme, je ne connaissais pas cette fonction. ca va me reservir
Je m'en sers très régulièrement. En contre partie, je veille toujours à ce que les champs sans valeur soient bien "Null" et non "vide". :-) -- Jérôme
SuperGolgoth
Je suis d'accord avec toi, mais c'est la base d'un ERP, et je me refuse a modifier la strucure de la base pour faire en sorte que les zones accepte les null ...
Error: Impossible d'insérer la valeur NULL dans la colonne 'analysis_b', table 'BASE.dbo.table2'. Cette colonne n'accepte pas les valeurs NULL.
Dans son message précédent, jeje a écrit :
"SuperGolgoth" a écrit dans le message de news:
Excellent, mais ... les zones 'vide' ne sont pas null ... elles sont vide ( = '' )
Dans ce cas, la soluce de GLB est à retenir alors.
Merci quand meme, je ne connaissais pas cette fonction. ca va me reservir
Je m'en sers très régulièrement. En contre partie, je veille toujours à ce que les champs sans valeur soient bien "Null" et non "vide". :-)
Je suis d'accord avec toi, mais c'est la base d'un ERP, et je me refuse
a modifier la strucure de la base pour faire en sorte que les zones
accepte les null ...
Error: Impossible d'insérer la valeur NULL dans la colonne
'analysis_b', table 'BASE.dbo.table2'. Cette colonne n'accepte pas les
valeurs NULL.
Dans son message précédent, jeje a écrit :
"SuperGolgoth" <NOSPAM@free.fr> a écrit dans le message de news:
mn.53737d71446d2495.67867@free.fr...
Excellent, mais ...
les zones 'vide' ne sont pas null ... elles sont vide ( = '' )
Dans ce cas, la soluce de GLB est à retenir alors.
Merci quand meme, je ne connaissais pas cette fonction. ca va me reservir
Je m'en sers très régulièrement. En contre partie, je veille toujours à ce
que les champs sans valeur soient bien "Null" et non "vide". :-)
Je suis d'accord avec toi, mais c'est la base d'un ERP, et je me refuse a modifier la strucure de la base pour faire en sorte que les zones accepte les null ...
Error: Impossible d'insérer la valeur NULL dans la colonne 'analysis_b', table 'BASE.dbo.table2'. Cette colonne n'accepte pas les valeurs NULL.
Dans son message précédent, jeje a écrit :
"SuperGolgoth" a écrit dans le message de news:
Excellent, mais ... les zones 'vide' ne sont pas null ... elles sont vide ( = '' )
Dans ce cas, la soluce de GLB est à retenir alors.
Merci quand meme, je ne connaissais pas cette fonction. ca va me reservir
Je m'en sers très régulièrement. En contre partie, je veille toujours à ce que les champs sans valeur soient bien "Null" et non "vide". :-)
SuperGolgoth
Merci beaucoup avec quelques adaptations (ce qui est normal of course) ca fonctionne a merveille Encore bravo
GLB a utilisé son clavier pour écrire :
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description , CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END , CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'
Non testé
A+ Gilles
Merci beaucoup
avec quelques adaptations (ce qui est normal of course)
ca fonctionne a merveille
Encore bravo
GLB a utilisé son clavier pour écrire :
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description
, CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END
, CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END
from tab1
left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag
left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag
Where t1.description like 'A%'
Merci beaucoup avec quelques adaptations (ce qui est normal of course) ca fonctionne a merveille Encore bravo
GLB a utilisé son clavier pour écrire :
Bonjour et meilleurs voeux,
Cette requette devrait faire l'affaire
select t1.mag, t1.codpro, t1.description , CASE WHEN isnull(t2.AnalisA,0) = 0 THEN t3.AnalisA ELSE t2.AnalisA END , CASE WHEN isnull(t2.AnalisB,0) = 0 THEN t3.AnalisB ELSE t2.AnalisB END from tab1 left outer join tab2 t2 on t2.codepro = t1.codepro AND t2.mag = t1.mag left outer join tab3 t3 on t3.codepro = t1.codepro AND t3.mag = t1.mag Where t1.description like 'A%'