select ta.ID as IDA, tb.id as IDB, '' as IDC from ta left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC from tc left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
)
group by IDB
la premiere union va remonter ceci
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL
la deusieme ceci
IDA IDB IDC 4) NULL Id Id
l'union des deux
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL 4) NULL Id Id
la sous requete (ou le select du haut) ceci :
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id id
le max servant a eliminer les NULL quand 2 lignes sont presentes (null ou ID dans tous les cas)
Bon dev @+
pourquoi faire tc left outer join tb au lieu de tb left outer join tc ?
c'est quoi la différence entre NULL et NUL à moins que ce soit une faute de frappe ;-)
-- Cordialement JeAn-PhI
Firetox
faudra peut etre rajouter un alias sur la sous requete :
SELECT max(IDA) idta ,max(IDB) as idtb ,max(IDC) idtc from (
select ta.ID as IDA, tb.id as IDB, '' as IDC from ta left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC from tc left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
) as TMPREQ
// la tu peux rajouter un where pour avoir ceux qui sont uniquement en ta et tc (la ligne 3 par exemple) // WHERE idtaq is not null and idtc is not null
group by TMPREQ.idtb
"Firetox" a écrit dans le message de news: 4923d99c$0$15991$
Bonjour,
par une union + une sous requete
SELECT max(IDA),max(IDB),max(IDC) from (
select ta.ID as IDA, tb.id as IDB, '' as IDC from ta left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC from tc left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
)
group by IDB
la premiere union va remonter ceci
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL
la deusieme ceci
IDA IDB IDC 4) NULL Id Id
l'union des deux
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL 4) NULL Id Id
la sous requete (ou le select du haut) ceci :
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id id
le max servant a eliminer les NULL quand 2 lignes sont presentes (null ou ID dans tous les cas)
Bon dev @+
"JeAn-PhI" a écrit dans le message de news: 4923d558$0$987$
bonjour
j'ai 3 tables comme suit :
Ta(0,1) -> (1,1)Tb(0,1) -> (1,1)Tc
je voudrais récupérer tous les enreg de Ta qui ont ou qui n'ont pas d'enreg dans Tb et les enreg de Tc qui ont un enreg dans Tb.
le résultat me donnerait qq ch comme cela
Ta Tb Tc 1) Id NULL NULL 2) Id Id NULL 3) Id Id Id
je sais comment faire la 1ère partie de ma req
select Ta.*, Tb.Id from Ta left outer join Tb on Ta.id = Tb.id
mais je ne sais pas comment faire la suite, un peu d'aide serait bienvenue
merci
-- Cordialement JeAn-PhI
faudra peut etre rajouter un alias sur la sous requete :
SELECT max(IDA) idta ,max(IDB) as idtb ,max(IDC) idtc
from (
select ta.ID as IDA, tb.id as IDB, '' as IDC
from ta
left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC
from tc
left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
) as TMPREQ
// la tu peux rajouter un where pour avoir ceux qui sont uniquement en ta et
tc (la ligne 3 par exemple)
// WHERE idtaq is not null and idtc is not null
group by TMPREQ.idtb
"Firetox" <firetox@SQLManagerX.com> a écrit dans le message de news:
4923d99c$0$15991$426a34cc@news.free.fr...
Bonjour,
par une union + une sous requete
SELECT max(IDA),max(IDB),max(IDC)
from (
select ta.ID as IDA, tb.id as IDB, '' as IDC
from ta
left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC
from tc
left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
)
group by IDB
la premiere union va remonter ceci
IDA IDB IDC
1) Id NULL NULL
2) Id Id NULL
3) Id Id NUL
la deusieme ceci
IDA IDB IDC
4) NULL Id Id
l'union des deux
IDA IDB IDC
1) Id NULL NULL
2) Id Id NULL
3) Id Id NUL
4) NULL Id Id
la sous requete (ou le select du haut) ceci :
IDA IDB IDC
1) Id NULL NULL
2) Id Id NULL
3) Id Id id
le max servant a eliminer les NULL quand 2 lignes sont presentes (null ou
ID dans tous les cas)
Bon dev
@+
"JeAn-PhI" <nospam@nospam.fr> a écrit dans le message de news:
4923d558$0$987$426a34cc@news.free.fr...
bonjour
j'ai 3 tables comme suit :
Ta(0,1) -> (1,1)Tb(0,1) -> (1,1)Tc
je voudrais récupérer tous les enreg de Ta qui ont ou qui n'ont pas
d'enreg dans Tb et les enreg de Tc qui ont un enreg dans Tb.
le résultat me donnerait qq ch comme cela
Ta Tb Tc
1) Id NULL NULL
2) Id Id NULL
3) Id Id Id
je sais comment faire la 1ère partie de ma req
select Ta.*, Tb.Id
from Ta left outer join Tb on Ta.id = Tb.id
mais je ne sais pas comment faire la suite, un peu d'aide serait
bienvenue
faudra peut etre rajouter un alias sur la sous requete :
SELECT max(IDA) idta ,max(IDB) as idtb ,max(IDC) idtc from (
select ta.ID as IDA, tb.id as IDB, '' as IDC from ta left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC from tc left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
) as TMPREQ
// la tu peux rajouter un where pour avoir ceux qui sont uniquement en ta et tc (la ligne 3 par exemple) // WHERE idtaq is not null and idtc is not null
group by TMPREQ.idtb
"Firetox" a écrit dans le message de news: 4923d99c$0$15991$
Bonjour,
par une union + une sous requete
SELECT max(IDA),max(IDB),max(IDC) from (
select ta.ID as IDA, tb.id as IDB, '' as IDC from ta left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC from tc left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
)
group by IDB
la premiere union va remonter ceci
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL
la deusieme ceci
IDA IDB IDC 4) NULL Id Id
l'union des deux
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL 4) NULL Id Id
la sous requete (ou le select du haut) ceci :
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id id
le max servant a eliminer les NULL quand 2 lignes sont presentes (null ou ID dans tous les cas)
Bon dev @+
"JeAn-PhI" a écrit dans le message de news: 4923d558$0$987$
bonjour
j'ai 3 tables comme suit :
Ta(0,1) -> (1,1)Tb(0,1) -> (1,1)Tc
je voudrais récupérer tous les enreg de Ta qui ont ou qui n'ont pas d'enreg dans Tb et les enreg de Tc qui ont un enreg dans Tb.
le résultat me donnerait qq ch comme cela
Ta Tb Tc 1) Id NULL NULL 2) Id Id NULL 3) Id Id Id
je sais comment faire la 1ère partie de ma req
select Ta.*, Tb.Id from Ta left outer join Tb on Ta.id = Tb.id
mais je ne sais pas comment faire la suite, un peu d'aide serait bienvenue
merci
-- Cordialement JeAn-PhI
Firetox
c'est une faute de frappe pour le NUL
pour le left join tout depend si tu veux toute les ligne tb qui ont ou non une liaison sur tc ou si tu veux tous les tc qui ont ou non une liaison dans tb
le select sera tb left join tc dans le premier cas et tc left join tb dans le deuxieme j'ai peut etre fait une connerie et tu as raison cela aurait du etre tb left join tc
"JeAn-PhI" a écrit dans le message de news: 4923dbfc$0$2260$
Il se trouve que Firetox a formulé :
Bonjour,
par une union + une sous requete
SELECT max(IDA),max(IDB),max(IDC) from (
select ta.ID as IDA, tb.id as IDB, '' as IDC from ta left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC from tc left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
)
group by IDB
la premiere union va remonter ceci
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL
la deusieme ceci
IDA IDB IDC 4) NULL Id Id
l'union des deux
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL 4) NULL Id Id
la sous requete (ou le select du haut) ceci :
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id id
le max servant a eliminer les NULL quand 2 lignes sont presentes (null ou ID dans tous les cas)
Bon dev @+
pourquoi faire tc left outer join tb au lieu de tb left outer join tc ?
c'est quoi la différence entre NULL et NUL à moins que ce soit une faute de frappe ;-)
-- Cordialement JeAn-PhI
c'est une faute de frappe pour le NUL
pour le left join tout depend
si tu veux toute les ligne tb qui ont ou non une liaison sur tc
ou si tu veux tous les tc qui ont ou non une liaison dans tb
le select sera tb left join tc dans le premier cas et tc left join tb dans
le deuxieme
j'ai peut etre fait une connerie et tu as raison cela aurait du etre tb left
join tc
"JeAn-PhI" <nospam@nospam.fr> a écrit dans le message de news:
4923dbfc$0$2260$426a34cc@news.free.fr...
Il se trouve que Firetox a formulé :
Bonjour,
par une union + une sous requete
SELECT max(IDA),max(IDB),max(IDC)
from (
select ta.ID as IDA, tb.id as IDB, '' as IDC
from ta
left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC
from tc
left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
)
group by IDB
la premiere union va remonter ceci
IDA IDB IDC
1) Id NULL NULL
2) Id Id NULL
3) Id Id NUL
la deusieme ceci
IDA IDB IDC
4) NULL Id Id
l'union des deux
IDA IDB IDC
1) Id NULL NULL
2) Id Id NULL
3) Id Id NUL
4) NULL Id Id
la sous requete (ou le select du haut) ceci :
IDA IDB IDC
1) Id NULL NULL
2) Id Id NULL
3) Id Id id
le max servant a eliminer les NULL quand 2 lignes sont presentes (null ou
ID dans tous les cas)
Bon dev
@+
pourquoi faire tc left outer join tb au lieu de tb left outer join tc ?
c'est quoi la différence entre NULL et NUL à moins que ce soit une faute
de frappe ;-)
pour le left join tout depend si tu veux toute les ligne tb qui ont ou non une liaison sur tc ou si tu veux tous les tc qui ont ou non une liaison dans tb
le select sera tb left join tc dans le premier cas et tc left join tb dans le deuxieme j'ai peut etre fait une connerie et tu as raison cela aurait du etre tb left join tc
"JeAn-PhI" a écrit dans le message de news: 4923dbfc$0$2260$
Il se trouve que Firetox a formulé :
Bonjour,
par une union + une sous requete
SELECT max(IDA),max(IDB),max(IDC) from (
select ta.ID as IDA, tb.id as IDB, '' as IDC from ta left join tb on (ta.id = tb.Id ...... plus ce que tu veux)
union
select '' as IDA, tb.id as IDB, tc.ID as IDC from tc left join tb on (tc.id = tb.Id ...... plus ce que tu veux)
)
group by IDB
la premiere union va remonter ceci
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL
la deusieme ceci
IDA IDB IDC 4) NULL Id Id
l'union des deux
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id NUL 4) NULL Id Id
la sous requete (ou le select du haut) ceci :
IDA IDB IDC 1) Id NULL NULL 2) Id Id NULL 3) Id Id id
le max servant a eliminer les NULL quand 2 lignes sont presentes (null ou ID dans tous les cas)
Bon dev @+
pourquoi faire tc left outer join tb au lieu de tb left outer join tc ?
c'est quoi la différence entre NULL et NUL à moins que ce soit une faute de frappe ;-)