Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/05/2011, 17h00   #1
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 0
Points : 0
Par défaut Requête avec exclusion

Bonjour je souhaite obtenir des enregistrements dans une table issus d'une requete de selection de la table lmc_altcell (ac)

le couple (ac.name, ac.code_partition) ne doit pas exister dans almc_cell
voici la requete que j'ai construite:

Code :
1
2
3
4
SELECT 0,'CHK010', ac.name, ac.code_partition, adms.code, NULL, NULL, NULL, NULL, NULL, NULL, NULL
			FROM lmc_altcell ac, adm_status adms 
			WHERE adms.id = ac.id_status AND adms.code <> 'DEV'
			AND (ac.name, ac.code_partition) NOT IN (SELECT altcellname, partition  FROM almc_cell)
le souci est que j'ai un vecteur de test que j'aimerais bien retrouver dans mon enregistrement, mais je ne le retrouve pas.
le couple existe dans la table lmc_altcell mais pas dans la table almc_cell. Je m'attends donc à le retrouver dans mon SELECT, mais je ne le trouve pas...

pouvez-vous m'aider?
bpollet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h09   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour

Vous pouvez utiliser NOT EXISTS :

Code SQL :
1
2
3
4
5
6
7
8
9
 
SELECT 0,'CHK010', ac.name, ac.code_partition, adms.code, NULL, NULL, NULL, NULL, NULL, NULL, NULL
FROM lmc_altcell ac, adm_status adms
WHERE adms.id = ac.id_status AND adms.code <> 'DEV'
AND NOT EXISTS (
    SELECT *
    FROM almc_cell
    WHERE altcellname= ac.name, 
    AND partition = ac.code_partition)

ou faire une jointure externe et évaluer la nullité des colonnes de la table almc_cell
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h09   #3
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 445
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 445
Points : 7 532
Points : 7 532
Es-tu certain que le couple que tu t'attends à trouver répond à tous les critères de la sélection ?
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h14   #4
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
J'avais la meme idée que aieeeuuuuu (les jointures en plus)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT 
	0,'CHK010', ac.name, ac.code_partition, adms.code, NULL, NULL, NULL, NULL, NULL, NULL, NULL
FROM 
	lmc_altcell ac INNER JOIN adm_status adms ON (adms.id = ac.id_status)
WHERE 
	adms.code <> 'DEV'
	AND NOT EXISTS 
	(
	 SELECT
		1
	 FROM
		almc_cell 
	 WHERE
		ac.name = almc_cell.name 
		AND ac.code_partition = almc_cell.code_partition
	)
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h18   #5
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 0
Points : 0
nickel ca fonctionne!

merci à tous!
bpollet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h11.


 
 
 
 
Partenaires

Hébergement Web