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 :

Cherche la bonne condition sur une requête


Sujet :

Langage SQL

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut Cherche la bonne condition sur une requête
    Bonjour à tous,

    j'ai un souci pour une requête SQL...
    J'ai 2 tables :

    T_client
    id
    nom
    prenom

    T_inscription
    id
    id_client

    Un client peut avoir (0,n) inscriptions.

    J'essaye d'établir une requête asez simple je pense.... mais je ne connais pas l'astuce.
    Comment faire pour lister tous les clients n'ayant aucune inscription ?

    Pour le moment, j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * 
    FROM T_client , T_inscription 
    WHERE T_client.id=T_inscription.id_client
    ORDER BY T_client.nom ASC, T_client.prenom ASC
    Si quelqu'un pouvait me donner un p'tit coup de pouce... ça serait cool !
    Merci d'avance

    Tchup.

  2. #2
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 398
    Points : 641
    Points
    641
    Par défaut
    Bonjour,
    je te propose (même si c'est pas du pur SQL sur les jointures) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT * 
    FROM T_client
    WHERE not exists 
     (select * from T_inscription
      where T_client.id=T_inscription.id_client)
    ORDER BY T_client.nom ASC, T_client.prenom ASC

  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Oulala !!!!

    Un grand à toi lper
    C'est trop cool, ça marche nickel chrome....


    @+

  4. #4
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut finalement c'est tout à fait résolu...
    finalement, c'est pas résolu...

    je viens de me rendre compte que la requête pose problème depuis que j'ai rajouté DISTINCT pour ne pas afficher plusieurs fois les mêmes personnes si elles ont plusieurs inscriptions.

    Voici ma requête actuelle :
    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
    SELECT DISTINCT 
    	T_client.id AS Id, 
    	T_client.civilite AS Civilite, 
    	T_client.nom AS Nom, 
    	T_client.prenom AS Prenom, 
    	T_client.sexe AS Sexe 
    FROM T_client 
    WHERE 
    	T_client.nom LIKE '%' 
    	AND NOT EXISTS (
    		SELECT * FROM T_inscription 
    		WHERE T_client.id=T_inscription.id_client) 
    ORDER BY 
    	T_client.nom ASC, 
    	T_client.prenom ASC
    Pourriez-vous m'aider une fois de plus ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 9
    Points : 15
    Points
    15
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT DISTINCT 
    	T_client.id AS Id, 
    	T_client.civilite AS Civilite, 
    	T_client.nom AS Nom, 
    	T_client.prenom AS Prenom, 
    	T_client.sexe AS Sexe 
    FROM T_client 
    LEFT OUTER JOIN T_Inscription 
    ON  T_client.id=T_inscription.id_client
    WHERE 
    	T_client.nom LIKE '%' 
    ORDER BY 
    	T_client.nom ASC, 
    	T_client.prenom ASC
    ça devrait marcher non?

    Claudio

  6. #6
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Un DISTINCT va ajouter quoi ? je suppose que chaque client ne figure qu'une fois dans la table Client, non ?
    Et le LIKE '%' est censé faire quoi ?

    Il ne me semble pas qu'il y ait qqch à modifier à la requête d'Iper.

    --
    Roland

Discussions similaires

  1. [AC-2010] Condition if sur une requête
    Par marcus crassus dans le forum Access
    Réponses: 45
    Dernier message: 03/09/2014, 09h14
  2. Réponses: 4
    Dernier message: 24/01/2012, 17h39
  3. Condition logique sur une requête
    Par NiKoS29 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 25/07/2007, 16h40
  4. [Requête] Explication sur une condition dans une Requête
    Par jimmymatrix dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/05/2007, 15h34
  5. Condition sur une requête
    Par Dimitri_87 dans le forum SQL
    Réponses: 1
    Dernier message: 03/04/2007, 19h07

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