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 :

Comment faire ma requête SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 161
    Par défaut Comment faire ma requête SQL
    Bonjour

    J'ai un petit soucis, je galère à écrire une requête SQL assez simple (enfin je crois...) qui récupérait dans une table T l'ensemble des ID qui possède à la fois une adresse EMAIL et une adresse fiscal FISC

    en fait dans ma table j'ai plusieurs identifiant qui devrait être en double car il doit y avoir pour chaque ID : 2 lignes:

    -1 ligne avec ADRESS_TYPE = 'EMAIL'
    -1 ligne avec ADRESS_TYPE = 'FISC'

    et moi je voudrai récupérer tous les ID qui n'ont qu'un seul enregistrement pour pouvoir ajouter le cas écheant l'enregistrement qui manque

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,

    une requete générique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select mon_id
    from ma_table
    where ma_cond in (cond1, cond2)
    group by mon_id
    having count(*) = 1

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    Bonjour,

    Si j'ai bien compris la logique de ta requete :

    Selectionne moi tous les ID de ma table dont il n'existe aucune adresse de type MAIL => tous les id ne possedant qu'un seul adresse et de type FISC
    UNION
    Selectionne moi tous les ID de ma table dont il n'existe aucune adresse de type FISC => tous les id ne possedant qu'un seul adresse et de type MAIL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    SELECT T.ID, 'EMAIL' as adresse_manquante
    FROM TABLE T
    WHERE NOT EXISTS ( SELECT 1
                                  FROM  TABLE T1
                                  WHERE T.ID =T1.ID
                                  AND T1.ADRESS_TYPE = 'EMAIL'
                                 )
    UNION
    SELECT T.ID, 'FISC' as adresse_manquante
    FROM TABLE T
    WHERE NOT EXISTS ( SELECT 1
                                  FROM  TABLE T1
                                  WHERE T.ID =T1.ID
                                  AND T1.ADRESS_TYPE = 'FISC'
                                 )

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    ou comment faire 4 scannages de tables, 2 jointures et un union là où un scannage + un group by suffit

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Citation Envoyé par punkoff Voir le message
    bonjour,

    une requete générique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select mon_id
    from ma_table
    where ma_cond in (cond1, cond2)
    group by mon_id
    having count(*) = 1
    Je pense que cette requête suffit plutot que de faire UNION ...

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 161
    Par défaut pb requete
    Merci à tous du coup j'ai fait cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select third_party, count(*) from postal_address
    group by third_party
    having
    count(*) < 2
    le probleme c est que j'ai besoin d'ajouter une condition et je vois pas comment faire c est à dire qu'il me faut toute les ID qui n'ont qu'une seul enregistrement et dont le champA = 0

    j'ai tenté ca mais ca marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select third_party, count(*) from postal_address
    group by third_party, champA
    having
    count(*) < 2
    and champA = 1

  7. #7
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 315
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 315
    Par défaut
    Il serait peut-être intéressant que tu commence avec les bases. Tu dois ici utiliser la clause WHERE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select third_party, count(*) 
    from postal_address
    where champA = 1
    group by third_party, champA
    having count(*) < 2

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 161
    Par défaut
    hello Laure

    C'est ce que j'ai fait dès le depart mais quand je prend un ID au hazard dans le resultat et que je le recherche dans la table il me sort 2 enregistrements

    or moi je veux ceux qui n ont qu 1 enregistrement et qui en plus ont le champsA = 1

Discussions similaires

  1. Comment faire ma requête sql ?
    Par Nouveau05 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/08/2010, 13h39
  2. Comment faire une requête Sql en VB
    Par Menontona dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/03/2009, 11h33
  3. Comment faire une requête SQL dans un datatable
    Par Passepoil dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/02/2007, 20h24
  4. [SQL] Comment faire ma requête
    Par kaiserazo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/05/2005, 10h39
  5. Réponses: 2
    Dernier message: 03/05/2004, 12h13

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