Comment faire pour retrouver la combinaison qui ne contient que valeur1 et
valeur2 ?
Comment faire pour retrouver la combinaison qui ne contient que valeur1 et
valeur2 ?
Comment faire pour retrouver la combinaison qui ne contient que valeur1 et
valeur2 ?
Bonjour,
jack a écrit:
> Comment faire pour retrouver la combinaison qui ne contient que valeur1
> valeur2 ?
Pour la prochaine fois, merci de :
1) préparer le DML des tables pour que nous n'ayons pas à le faire
nous-mêmes
2) indiquer ta version de SQL Server.
Ceci fonctionne en 2005 :
USE tempdb
GO
CREATE TABLE combinaison (
combi_id int,
combi_nom varchar(20)
)
GO
CREATE TABLE combinaison_ligne (
combi_id int,
ligne_valeur varchar(20)
)
GO
INSERT INTO combinaison VALUES (1, 'combinaison_1')
INSERT INTO combinaison VALUES (2, 'combinaison_2')
INSERT INTO combinaison VALUES (3, 'combinaison_3')
INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
GO
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur2'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
GROUP BY combi_id
HAVING count(*) = 2
--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/
Bonjour,
jack a écrit:
> Comment faire pour retrouver la combinaison qui ne contient que valeur1
> valeur2 ?
Pour la prochaine fois, merci de :
1) préparer le DML des tables pour que nous n'ayons pas à le faire
nous-mêmes
2) indiquer ta version de SQL Server.
Ceci fonctionne en 2005 :
USE tempdb
GO
CREATE TABLE combinaison (
combi_id int,
combi_nom varchar(20)
)
GO
CREATE TABLE combinaison_ligne (
combi_id int,
ligne_valeur varchar(20)
)
GO
INSERT INTO combinaison VALUES (1, 'combinaison_1')
INSERT INTO combinaison VALUES (2, 'combinaison_2')
INSERT INTO combinaison VALUES (3, 'combinaison_3')
INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
GO
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur2'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
GROUP BY combi_id
HAVING count(*) = 2
--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/
Bonjour,
jack a écrit:
> Comment faire pour retrouver la combinaison qui ne contient que valeur1
> valeur2 ?
Pour la prochaine fois, merci de :
1) préparer le DML des tables pour que nous n'ayons pas à le faire
nous-mêmes
2) indiquer ta version de SQL Server.
Ceci fonctionne en 2005 :
USE tempdb
GO
CREATE TABLE combinaison (
combi_id int,
combi_nom varchar(20)
)
GO
CREATE TABLE combinaison_ligne (
combi_id int,
ligne_valeur varchar(20)
)
GO
INSERT INTO combinaison VALUES (1, 'combinaison_1')
INSERT INTO combinaison VALUES (2, 'combinaison_2')
INSERT INTO combinaison VALUES (3, 'combinaison_3')
INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
GO
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur2'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
GROUP BY combi_id
HAVING count(*) = 2
--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/
Merci.
Malheureusement pour moi je suis en 2000.
Y a-t-il une solution ?
"Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
news:uA$ixx%Bonjour,
jack a écrit:
> Comment faire pour retrouver la combinaison qui ne contient que valeur1
et> valeur2 ?
Pour la prochaine fois, merci de :
1) préparer le DML des tables pour que nous n'ayons pas à le faire
nous-mêmes
2) indiquer ta version de SQL Server.
Ceci fonctionne en 2005 :
USE tempdb
GO
CREATE TABLE combinaison (
combi_id int,
combi_nom varchar(20)
)
GO
CREATE TABLE combinaison_ligne (
combi_id int,
ligne_valeur varchar(20)
)
GO
INSERT INTO combinaison VALUES (1, 'combinaison_1')
INSERT INTO combinaison VALUES (2, 'combinaison_2')
INSERT INTO combinaison VALUES (3, 'combinaison_3')
INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
GO
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur2'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
GROUP BY combi_id
HAVING count(*) = 2
--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/
Merci.
Malheureusement pour moi je suis en 2000.
Y a-t-il une solution ?
"Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
news:uA$ixx%23YIHA.4712@TK2MSFTNGP05.phx.gbl...
Bonjour,
jack a écrit:
> Comment faire pour retrouver la combinaison qui ne contient que valeur1
et
> valeur2 ?
Pour la prochaine fois, merci de :
1) préparer le DML des tables pour que nous n'ayons pas à le faire
nous-mêmes
2) indiquer ta version de SQL Server.
Ceci fonctionne en 2005 :
USE tempdb
GO
CREATE TABLE combinaison (
combi_id int,
combi_nom varchar(20)
)
GO
CREATE TABLE combinaison_ligne (
combi_id int,
ligne_valeur varchar(20)
)
GO
INSERT INTO combinaison VALUES (1, 'combinaison_1')
INSERT INTO combinaison VALUES (2, 'combinaison_2')
INSERT INTO combinaison VALUES (3, 'combinaison_3')
INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
GO
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur2'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
GROUP BY combi_id
HAVING count(*) = 2
--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/
Merci.
Malheureusement pour moi je suis en 2000.
Y a-t-il une solution ?
"Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
news:uA$ixx%Bonjour,
jack a écrit:
> Comment faire pour retrouver la combinaison qui ne contient que valeur1
et> valeur2 ?
Pour la prochaine fois, merci de :
1) préparer le DML des tables pour que nous n'ayons pas à le faire
nous-mêmes
2) indiquer ta version de SQL Server.
Ceci fonctionne en 2005 :
USE tempdb
GO
CREATE TABLE combinaison (
combi_id int,
combi_nom varchar(20)
)
GO
CREATE TABLE combinaison_ligne (
combi_id int,
ligne_valeur varchar(20)
)
GO
INSERT INTO combinaison VALUES (1, 'combinaison_1')
INSERT INTO combinaison VALUES (2, 'combinaison_2')
INSERT INTO combinaison VALUES (3, 'combinaison_3')
INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
GO
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur2'
INTERSECT
SELECT combi_id
FROM combinaison_ligne
GROUP BY combi_id
HAVING count(*) = 2
--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/
On reprend les mêmes tables que celles de Rudi :
SELECT * FROM combinaison
WHERE combi_id IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1' or ligne_valeur = 'valeur2'
GROUP BY combi_id
HAVING count(*) = 2 )
AND combi_id NOT IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur NOT IN ('valeur1', 'valeur2'))
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"jack" a écrit dans le message de groupe de discussion :
O7JwEp$
> Merci.
>
> Malheureusement pour moi je suis en 2000.
> Y a-t-il une solution ?
>
> "Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
> news:uA$ixx%
>> Bonjour,
>>
>> jack a écrit:
>>
>> > Comment faire pour retrouver la combinaison qui ne contient que
> et
>> > valeur2 ?
>>
>> Pour la prochaine fois, merci de :
>> 1) préparer le DML des tables pour que nous n'ayons pas à le faire
>> nous-mêmes
>> 2) indiquer ta version de SQL Server.
>>
>> Ceci fonctionne en 2005 :
>>
>> USE tempdb
>> GO
>>
>> CREATE TABLE combinaison (
>> combi_id int,
>> combi_nom varchar(20)
>> )
>> GO
>>
>> CREATE TABLE combinaison_ligne (
>> combi_id int,
>> ligne_valeur varchar(20)
>> )
>> GO
>>
>> INSERT INTO combinaison VALUES (1, 'combinaison_1')
>> INSERT INTO combinaison VALUES (2, 'combinaison_2')
>> INSERT INTO combinaison VALUES (3, 'combinaison_3')
>>
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
>>
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
>>
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
>> GO
>>
>>
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur1'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur2'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> GROUP BY combi_id
>> HAVING count(*) = 2
>>
>> --
>> Rudi Bruchez
>> Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
>> http://www.babaluga.com/
>> http://rudi.developpez.com/
>
>
On reprend les mêmes tables que celles de Rudi :
SELECT * FROM combinaison
WHERE combi_id IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1' or ligne_valeur = 'valeur2'
GROUP BY combi_id
HAVING count(*) = 2 )
AND combi_id NOT IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur NOT IN ('valeur1', 'valeur2'))
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"jack" <jack@nospam.fr> a écrit dans le message de groupe de discussion :
O7JwEp$YIHA.4180@TK2MSFTNGP06.phx.gbl...
> Merci.
>
> Malheureusement pour moi je suis en 2000.
> Y a-t-il une solution ?
>
> "Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
> news:uA$ixx%23YIHA.4712@TK2MSFTNGP05.phx.gbl...
>> Bonjour,
>>
>> jack a écrit:
>>
>> > Comment faire pour retrouver la combinaison qui ne contient que
> et
>> > valeur2 ?
>>
>> Pour la prochaine fois, merci de :
>> 1) préparer le DML des tables pour que nous n'ayons pas à le faire
>> nous-mêmes
>> 2) indiquer ta version de SQL Server.
>>
>> Ceci fonctionne en 2005 :
>>
>> USE tempdb
>> GO
>>
>> CREATE TABLE combinaison (
>> combi_id int,
>> combi_nom varchar(20)
>> )
>> GO
>>
>> CREATE TABLE combinaison_ligne (
>> combi_id int,
>> ligne_valeur varchar(20)
>> )
>> GO
>>
>> INSERT INTO combinaison VALUES (1, 'combinaison_1')
>> INSERT INTO combinaison VALUES (2, 'combinaison_2')
>> INSERT INTO combinaison VALUES (3, 'combinaison_3')
>>
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
>>
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
>>
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
>> GO
>>
>>
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur1'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur2'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> GROUP BY combi_id
>> HAVING count(*) = 2
>>
>> --
>> Rudi Bruchez
>> Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
>> http://www.babaluga.com/
>> http://rudi.developpez.com/
>
>
On reprend les mêmes tables que celles de Rudi :
SELECT * FROM combinaison
WHERE combi_id IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1' or ligne_valeur = 'valeur2'
GROUP BY combi_id
HAVING count(*) = 2 )
AND combi_id NOT IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur NOT IN ('valeur1', 'valeur2'))
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"jack" a écrit dans le message de groupe de discussion :
O7JwEp$
> Merci.
>
> Malheureusement pour moi je suis en 2000.
> Y a-t-il une solution ?
>
> "Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
> news:uA$ixx%
>> Bonjour,
>>
>> jack a écrit:
>>
>> > Comment faire pour retrouver la combinaison qui ne contient que
> et
>> > valeur2 ?
>>
>> Pour la prochaine fois, merci de :
>> 1) préparer le DML des tables pour que nous n'ayons pas à le faire
>> nous-mêmes
>> 2) indiquer ta version de SQL Server.
>>
>> Ceci fonctionne en 2005 :
>>
>> USE tempdb
>> GO
>>
>> CREATE TABLE combinaison (
>> combi_id int,
>> combi_nom varchar(20)
>> )
>> GO
>>
>> CREATE TABLE combinaison_ligne (
>> combi_id int,
>> ligne_valeur varchar(20)
>> )
>> GO
>>
>> INSERT INTO combinaison VALUES (1, 'combinaison_1')
>> INSERT INTO combinaison VALUES (2, 'combinaison_2')
>> INSERT INTO combinaison VALUES (3, 'combinaison_3')
>>
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
>>
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
>>
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
>> GO
>>
>>
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur1'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur2'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> GROUP BY combi_id
>> HAVING count(*) = 2
>>
>> --
>> Rudi Bruchez
>> Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
>> http://www.babaluga.com/
>> http://rudi.developpez.com/
>
>
Merci
"Philippe TROTIN [MS]" wrote in message
news:On reprend les mêmes tables que celles de Rudi :
SELECT * FROM combinaison
WHERE combi_id IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1' or ligne_valeur = 'valeur2'
GROUP BY combi_id
HAVING count(*) = 2 )
AND combi_id NOT IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur NOT IN ('valeur1', 'valeur2'))
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"jack" a écrit dans le message de groupe de discussion :
O7JwEp$
> Merci.
>
> Malheureusement pour moi je suis en 2000.
> Y a-t-il une solution ?
>
> "Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
> news:uA$ixx%
>> Bonjour,
>>
>> jack a écrit:
>>
>> > Comment faire pour retrouver la combinaison qui ne contient que
valeur1> et
>> > valeur2 ?
>>
>> Pour la prochaine fois, merci de :
>> 1) préparer le DML des tables pour que nous n'ayons pas à le faire
>> nous-mêmes
>> 2) indiquer ta version de SQL Server.
>>
>> Ceci fonctionne en 2005 :
>>
>> USE tempdb
>> GO
>>
>> CREATE TABLE combinaison (
>> combi_id int,
>> combi_nom varchar(20)
>> )
>> GO
>>
>> CREATE TABLE combinaison_ligne (
>> combi_id int,
>> ligne_valeur varchar(20)
>> )
>> GO
>>
>> INSERT INTO combinaison VALUES (1, 'combinaison_1')
>> INSERT INTO combinaison VALUES (2, 'combinaison_2')
>> INSERT INTO combinaison VALUES (3, 'combinaison_3')
>>
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
>>
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
>>
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
>> GO
>>
>>
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur1'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur2'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> GROUP BY combi_id
>> HAVING count(*) = 2
>>
>> --
>> Rudi Bruchez
>> Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
>> http://www.babaluga.com/
>> http://rudi.developpez.com/
>
>
Merci
"Philippe TROTIN [MS]" <ptrotin@online.microsoft.com> wrote in message
news:269186D8-511C-42B8-ADE5-0B29BBF8E4DA@microsoft.com...
On reprend les mêmes tables que celles de Rudi :
SELECT * FROM combinaison
WHERE combi_id IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1' or ligne_valeur = 'valeur2'
GROUP BY combi_id
HAVING count(*) = 2 )
AND combi_id NOT IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur NOT IN ('valeur1', 'valeur2'))
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"jack" <jack@nospam.fr> a écrit dans le message de groupe de discussion :
O7JwEp$YIHA.4180@TK2MSFTNGP06.phx.gbl...
> Merci.
>
> Malheureusement pour moi je suis en 2000.
> Y a-t-il une solution ?
>
> "Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
> news:uA$ixx%23YIHA.4712@TK2MSFTNGP05.phx.gbl...
>> Bonjour,
>>
>> jack a écrit:
>>
>> > Comment faire pour retrouver la combinaison qui ne contient que
valeur1
> et
>> > valeur2 ?
>>
>> Pour la prochaine fois, merci de :
>> 1) préparer le DML des tables pour que nous n'ayons pas à le faire
>> nous-mêmes
>> 2) indiquer ta version de SQL Server.
>>
>> Ceci fonctionne en 2005 :
>>
>> USE tempdb
>> GO
>>
>> CREATE TABLE combinaison (
>> combi_id int,
>> combi_nom varchar(20)
>> )
>> GO
>>
>> CREATE TABLE combinaison_ligne (
>> combi_id int,
>> ligne_valeur varchar(20)
>> )
>> GO
>>
>> INSERT INTO combinaison VALUES (1, 'combinaison_1')
>> INSERT INTO combinaison VALUES (2, 'combinaison_2')
>> INSERT INTO combinaison VALUES (3, 'combinaison_3')
>>
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
>>
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
>>
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
>> GO
>>
>>
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur1'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur2'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> GROUP BY combi_id
>> HAVING count(*) = 2
>>
>> --
>> Rudi Bruchez
>> Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
>> http://www.babaluga.com/
>> http://rudi.developpez.com/
>
>
Merci
"Philippe TROTIN [MS]" wrote in message
news:On reprend les mêmes tables que celles de Rudi :
SELECT * FROM combinaison
WHERE combi_id IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur = 'valeur1' or ligne_valeur = 'valeur2'
GROUP BY combi_id
HAVING count(*) = 2 )
AND combi_id NOT IN (
SELECT combi_id
FROM combinaison_ligne
WHERE ligne_valeur NOT IN ('valeur1', 'valeur2'))
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"jack" a écrit dans le message de groupe de discussion :
O7JwEp$
> Merci.
>
> Malheureusement pour moi je suis en 2000.
> Y a-t-il une solution ?
>
> "Rudi Bruchez" <rudi#nospam#at#babaluga.com> wrote in message
> news:uA$ixx%
>> Bonjour,
>>
>> jack a écrit:
>>
>> > Comment faire pour retrouver la combinaison qui ne contient que
valeur1> et
>> > valeur2 ?
>>
>> Pour la prochaine fois, merci de :
>> 1) préparer le DML des tables pour que nous n'ayons pas à le faire
>> nous-mêmes
>> 2) indiquer ta version de SQL Server.
>>
>> Ceci fonctionne en 2005 :
>>
>> USE tempdb
>> GO
>>
>> CREATE TABLE combinaison (
>> combi_id int,
>> combi_nom varchar(20)
>> )
>> GO
>>
>> CREATE TABLE combinaison_ligne (
>> combi_id int,
>> ligne_valeur varchar(20)
>> )
>> GO
>>
>> INSERT INTO combinaison VALUES (1, 'combinaison_1')
>> INSERT INTO combinaison VALUES (2, 'combinaison_2')
>> INSERT INTO combinaison VALUES (3, 'combinaison_3')
>>
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (1, 'valeur2')
>>
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur3')
>> INSERT INTO combinaison_ligne VALUES (2, 'valeur1')
>>
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur1')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur2')
>> INSERT INTO combinaison_ligne VALUES (3, 'valeur3')
>> GO
>>
>>
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur1'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> WHERE ligne_valeur = 'valeur2'
>> INTERSECT
>> SELECT combi_id
>> FROM combinaison_ligne
>> GROUP BY combi_id
>> HAVING count(*) = 2
>>
>> --
>> Rudi Bruchez
>> Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
>> http://www.babaluga.com/
>> http://rudi.developpez.com/
>
>