Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 27/07/2011, 08h12   #1
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Par défaut Dédoublonnage sur jointure

Bonjour,

Voila je developpe une petite application sous Android et j'ai un problème très bête sur une requète. Seulement je ne vois pas comment je vais pouvoir m'en sortir...

Donc j'ai une table A qui contient ceci :

Id | name
10 | André
11 | Raymond
12 | Fréderic

Et j'ai une table B qui contient ceci :

id_A | id_cat
10 | 4
10 | 6
10 | 7
11 | 3
11 | 6
12 | 7
12 | 2

Je voudrais réaliser une requète SQL qui exclus certains enregistrement, de cette manière :

Code :
1
2
3
4
5
 
SELECT A.id, A.name FROM A
LEFT JOIN B ON B.id_A = A.id
WHERE id_cat NOT IN (2,3)
ORDER BY A.name ASC;
Vous l'aurez compris, une personne peut entrer dans une ou plusieurs catégories. Si j'envoie la requête ci dessus, les lignes qui contiennent 2 et 3 dans l'id_cat ne remonte pas, mais les autres si.
Cela me donne ce résultat :
Code :
1
2
3
4
5
6
 
    10   |   André
    10   |   André
    10   |   André
    11   |   Raymond
    12   |   Fréderic
Je voudrais pouvoir exclure des résultats 11 et 12...
Bien evidemment si je mets un DISTINCT sur le A.id, je retrouve avec 3 lignes...
En gros je voudrais que seul André remonte car il n'a pas d'id_cat à 2 ou a 3.

Y a t-il un moyen compatible avec SQLite de faire ceci ?

En vous remerciant par avance
Cadoudal56
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 16h15   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 955
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 955
Points : 17 779
Points : 17 779
C'est du simple SQL.... Postez dans le forum SQL !

Code :
1
2
3
4
5
6
7
SELECT A.id, A.name 
FROM   A 
WHERE  NOT EXISTS(SELECT *
                  FROM   B
                  WHERE  B.id_A = A.id
                    AND  id_cat IN (2,3))
ORDER  BY name ASC;
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h08.


 
 
 
 
Partenaires

Hébergement Web