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
Nicolas
Petite précision : j'ai déjà essayé de faire une requête UNION entre les 2 tables, seul problème ça ne prend en compte que les enregistrements ayant le NUM en commun. Ce que je veux, c'est avoir tous les enregistrements, c'est à dire ceux communs aux deux tables et ceux non communs ;-)
Nicolas
Petite précision : j'ai déjà essayé de faire une requête
UNION entre les 2 tables, seul problème ça ne prend en
compte que les enregistrements ayant le NUM en commun. Ce
que je veux, c'est avoir tous les enregistrements, c'est à
dire ceux communs aux deux tables et ceux non communs ;-)
Petite précision : j'ai déjà essayé de faire une requête UNION entre les 2 tables, seul problème ça ne prend en compte que les enregistrements ayant le NUM en commun. Ce que je veux, c'est avoir tous les enregistrements, c'est à dire ceux communs aux deux tables et ceux non communs ;-)
Nicolas
Zoury
Salut Nicolas! :O)
Ça dépend de l'environnement j'imagine.. en T-SQL tu pourrais faire ceci :
--- -- on créer la table #t1 create table #t1 ( num char(3), qte int ) go -- on créer la table #t2 create table #t2 ( num char(3), qte int ) go -- on créer nos enregsitrements tests insert into #t1(num, qte) values('005', 10) insert into #t1(num, qte) values('006', 9) insert into #t1(num, qte) values('007', 25) insert into #t1(num, qte) values('008', 3) insert into #t2(num, qte) values('001', 4) insert into #t2(num, qte) values('006', 8) insert into #t2(num, qte) values('008', 11) go -- voici ta requête.. -- -- le "select into" permet de créer la table #t3. -- elle ne doit pas exister avant l'appel.. -- la méthode coalesce() permet de renvoyer -- le premier champs spécifié, si toutefois -- sa valeur est NULL, la fonction renvoit -- la valeur suivante, si elle est NULL, il -- renvoit la suivante et ainsi de suite.. -- le "full join" renvoit tous les enregistrements -- des deux tables, mais permet de "merger" -- ceux qui ont le même NUM. select coalesce(#t1.num, #t2.num) NUM, #t1.qte QTE1, #t2.qte QTE2 into #t3 from #t1 full join #t2 on #t1.num = #t2.num go -- on affiche le résultat select * from #t3 order by num go -- on libère les ressources drop table #t1 drop table #t2 drop table #t3 go ---
le truc dans ce case ci est d'expoiter le "full join" qui renvoit tous les enregistrements des deux côtés..
"Nicolas" a écrit dans le message de news:5bd801c474a0$3986ee30$ Bonjour,
J'ai 2 tables T1 et T2 dont voici les aperçu :
T1 --------- NUM QTE 005 10 006 9 007 25 008 3
T2 --------- NUM QTE 001 4 006 8 008 11
Je voudrais obtenir la table T3 suivante (union des 2 tables)
T3 ------------------ NUM QTE1 QTE2 001 4 005 10 006 9 8 007 25 008 3 11
Comment faire ?
Merci
Nicolas
Salut Nicolas! :O)
Ça dépend de l'environnement j'imagine.. en T-SQL tu pourrais faire ceci :
---
-- on créer la table #t1
create table #t1
(
num char(3),
qte int
)
go
-- on créer la table #t2
create table #t2
(
num char(3),
qte int
)
go
-- on créer nos enregsitrements tests
insert into #t1(num, qte) values('005', 10)
insert into #t1(num, qte) values('006', 9)
insert into #t1(num, qte) values('007', 25)
insert into #t1(num, qte) values('008', 3)
insert into #t2(num, qte) values('001', 4)
insert into #t2(num, qte) values('006', 8)
insert into #t2(num, qte) values('008', 11)
go
-- voici ta requête..
--
-- le "select into" permet de créer la table #t3.
-- elle ne doit pas exister avant l'appel..
-- la méthode coalesce() permet de renvoyer
-- le premier champs spécifié, si toutefois
-- sa valeur est NULL, la fonction renvoit
-- la valeur suivante, si elle est NULL, il
-- renvoit la suivante et ainsi de suite..
-- le "full join" renvoit tous les enregistrements
-- des deux tables, mais permet de "merger"
-- ceux qui ont le même NUM.
select coalesce(#t1.num, #t2.num) NUM,
#t1.qte QTE1,
#t2.qte QTE2
into #t3
from #t1 full join #t2 on #t1.num = #t2.num
go
-- on affiche le résultat
select * from #t3 order by num
go
-- on libère les ressources
drop table #t1
drop table #t2
drop table #t3
go
---
le truc dans ce case ci est d'expoiter le "full join" qui renvoit tous les
enregistrements des deux côtés..
Ça dépend de l'environnement j'imagine.. en T-SQL tu pourrais faire ceci :
--- -- on créer la table #t1 create table #t1 ( num char(3), qte int ) go -- on créer la table #t2 create table #t2 ( num char(3), qte int ) go -- on créer nos enregsitrements tests insert into #t1(num, qte) values('005', 10) insert into #t1(num, qte) values('006', 9) insert into #t1(num, qte) values('007', 25) insert into #t1(num, qte) values('008', 3) insert into #t2(num, qte) values('001', 4) insert into #t2(num, qte) values('006', 8) insert into #t2(num, qte) values('008', 11) go -- voici ta requête.. -- -- le "select into" permet de créer la table #t3. -- elle ne doit pas exister avant l'appel.. -- la méthode coalesce() permet de renvoyer -- le premier champs spécifié, si toutefois -- sa valeur est NULL, la fonction renvoit -- la valeur suivante, si elle est NULL, il -- renvoit la suivante et ainsi de suite.. -- le "full join" renvoit tous les enregistrements -- des deux tables, mais permet de "merger" -- ceux qui ont le même NUM. select coalesce(#t1.num, #t2.num) NUM, #t1.qte QTE1, #t2.qte QTE2 into #t3 from #t1 full join #t2 on #t1.num = #t2.num go -- on affiche le résultat select * from #t3 order by num go -- on libère les ressources drop table #t1 drop table #t2 drop table #t3 go ---
le truc dans ce case ci est d'expoiter le "full join" qui renvoit tous les enregistrements des deux côtés..
"Nicolas" a écrit dans le message de news:5bd801c474a0$3986ee30$ Bonjour,
J'ai 2 tables T1 et T2 dont voici les aperçu :
T1 --------- NUM QTE 005 10 006 9 007 25 008 3
T2 --------- NUM QTE 001 4 006 8 008 11
Je voudrais obtenir la table T3 suivante (union des 2 tables)
T3 ------------------ NUM QTE1 QTE2 001 4 005 10 006 9 8 007 25 008 3 11
Comment faire ?
Merci
Nicolas
Pascal
Bonjour Nicolas,
Utilise plutôt UNION ALL
Pascal.
-----Message d'origine----- Petite précision : j'ai déjà essayé de faire une requête UNION entre les 2 tables, seul problème ça ne prend en compte que les enregistrements ayant le NUM en commun. Ce que je veux, c'est avoir tous les enregistrements, c'est
à
dire ceux communs aux deux tables et ceux non communs ;-)
Nicolas .
Bonjour Nicolas,
Utilise plutôt UNION ALL
Pascal.
-----Message d'origine-----
Petite précision : j'ai déjà essayé de faire une requête
UNION entre les 2 tables, seul problème ça ne prend en
compte que les enregistrements ayant le NUM en commun. Ce
que je veux, c'est avoir tous les enregistrements, c'est
à
dire ceux communs aux deux tables et ceux non communs ;-)
-----Message d'origine----- Petite précision : j'ai déjà essayé de faire une requête UNION entre les 2 tables, seul problème ça ne prend en compte que les enregistrements ayant le NUM en commun. Ce que je veux, c'est avoir tous les enregistrements, c'est
à
dire ceux communs aux deux tables et ceux non communs ;-)
Nicolas .
Zoury
Salut Pascal! :O)
Utilise plutôt UNION ALL
Si tu regardes attentivement ce que Nicolas veut obtenir comme résultat, tu te verras vite que "UNION ALL" ne donne pas le résultat escompter.. il ne fait que lister le contenu des deux tables une à la suite de l'autre.
ex : --- select * from #t1 union all select * from #t2 ---
Si tu regardes attentivement ce que Nicolas veut obtenir comme résultat, tu
te verras vite que "UNION ALL" ne donne pas le résultat escompter.. il ne
fait que lister le contenu des deux tables une à la suite de l'autre.
ex :
---
select * from #t1
union all
select * from #t2
---
Si tu regardes attentivement ce que Nicolas veut obtenir comme résultat, tu te verras vite que "UNION ALL" ne donne pas le résultat escompter.. il ne fait que lister le contenu des deux tables une à la suite de l'autre.
ex : --- select * from #t1 union all select * from #t2 ---