IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[Oracle 10g] liste de valeurs sans doublons


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut [Oracle 10g] liste de valeurs sans doublons
    Bonjour,

    J'ai une base contenant deux tables sous Oracle 10g
    une table question(ID_Question, ID_reponse)
    et une table reponse(ID_reponse, texte)

    Je souhaite obtenir le liste des question sans les doublons (sélection par le ID_question le plus ancien).
    Un doublons est caractérisé par un élément ayant le même ID_reponse.

    exemple:
    si j'ai
    question(1,2)
    question(2,2)

    alors question(2,2) est un doublon et ne doit pas sortir.

    Pour faire ça j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT COUNT(table.ID) 
    FROM
    	(
    		(SELECT question.id_question FROM question, reponse
    		WHERE question.id_reponse=reponse.id_reponse) MINUS
    		(SELECT max(CR.id_question) FROM question, reponse
    		WHERE question.id_reponse=reponse.id_reponse
    		HAVING COUNT(*) > 1)
    	) 
    	table
    seulement ça ne m'enlève qu'une valeur.

    Je n'arrive pas à trouver la façon de lister:
    chaque question avec tous ses doublons et de ne pas prendre les autres en compte.

    Je me suis inspiré de http://oracle.developpez.com/faq/?page=3-1#doublons
    mais je n'arrive pas en une requete à effectuer cela sans passer par une table intermédiaire.

    Quelqu'un aurait-il une idée, un petit conseil permettant de m'aiguiller dans ma recherche?

    Je vous en remercie infiniment d'avance
    Amicalement
    gojira

    Edit pour correction de l'algorithme

  2. #2
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Bonjour,

    As-tu essayé d'utiliser DISTINCT ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DISTINCT question.id_reponse 
    FROM question, reponse
    WHERE question.id_reponse=reponse.id_reponse

  3. #3
    Membre confirmé Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut
    Je me suis fourvoyé avec le nom du champ discriminant.
    Dans mes deux tables Oracle j'ai les valeurs d'ID 1 à 6
    Par exemple j'ai les associations suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    id_question	id_response
    1		1
    2		2
    3		1
    4		3
    5		1
    6		2
    7		2
    8		1
    9		3
    et je veux supprimer les doublons c'est à dire les couples
    (id_question, id_reponse) qui ont le même id_reponse, mais en gardant au moins un exemplaire (donc un non doublons).

    on aura donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id_question	id_response
    1		1
    2		2
    4		3
    et je ne vois pas comment je peux en arriver là en faisant une simple requête unique

  4. #4
    Membre confirmé Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut
    Merci beaucoup zooro.
    je vois ce que tu voulais me dire... j'ai mis du temps à percuter...
    en fait je veux tous les question.id_question.
    Si je fais un distinct sur les question.id_reponse je n'arrive pas à avoir le id_question.

  5. #5
    Membre confirmé Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut
    J'ai trouvé... je passe par une vue qui me sélectionne les doublons et il ne me reste plus qu'à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where id not in (select id from table_doublons)
    Merci à tous ceux qui se sont penchés là-dessus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tableau de valeurs sans doublons à arrondis
    Par fraid49 dans le forum Général Python
    Réponses: 6
    Dernier message: 15/10/2009, 09h19
  2. Liste de choix sans doublons dans une colonne
    Par LouFels dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2008, 22h58
  3. Réponses: 3
    Dernier message: 24/10/2007, 17h34
  4. [Forms]Oracle 11i - Liste de valeur
    Par memed dans le forum Forms
    Réponses: 3
    Dernier message: 06/04/2007, 22h33
  5. Réponses: 19
    Dernier message: 17/05/2006, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo