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

MS SQL Server Discussion :

Cherche Requête particulière


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 463
    Points : 114
    Points
    114
    Par défaut Cherche Requête particulière
    Salut !


    Dans le cours d'un programme, je dois afficher pour un user toutes les villes où il habite. Ce que je fais avec cette SP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ALTER procedure [SP_APPL].[ListAllVilleParPersonne]
    @Pers_Id int
    as
    select Libelle from Personne 
    inner join Habite on Personne.Pers_Id = Habite.Pers_id
    inner join Ville on Habite.Ville_Id = Ville.Ville_id
    where Personne.Pers_Id = @Pers_Id
    Maintenant, là où je cale, c'est qu'il faut aussi afficher toutes les villes où il n'habite pas... Et là, je ne vois vraiment pas comment créer un ordre en SQL pour arriver à cela.

    NB : Il y a 3 tables (Personne, Ville et Habite); c'est du many-to-many.

    Si vous voyez plus clair que moi !

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Libelle FROM Personne 
    INNER JOIN Habite ON Personne.Pers_Id = Habite.Pers_id
    INNER JOIN Ville ON Habite.Ville_Id <> Ville.Ville_id
    WHERE Personne.Pers_Id = @Pers_Id
    Tu es sûr que c'est bien ce que tu veux avoir ??

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 463
    Points : 114
    Points
    114
    Par défaut
    Voilà, j'ai trouvé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select Libelle from Ville 
    where libelle not in(
    	select Libelle 
    	from Ville as V inner join Habite as H
    		on V.Ville_Id = H.Ville_id
    	inner join Personne as P
    		on H.Pers_Id = P.Pers_id
    	where P.Pers_Id = @Pers_Id
    )
    order by Libelle

    Merci d'avoir cherché

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Une autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM Ville
    WHERE NOT EXISTS (SELECT *
                                  FROM Personne
    		     INNER JOIN Habite
    		     ON Personne.Pers_Id = Habite.Pers_Id
    		     WHERE Habite.Ville_Id = Ville.Ville_id
    		    AND Personne.Pers_Id = 1);
    ++

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 463
    Points : 114
    Points
    114
    Par défaut
    C'est encore moi...


    J'ai une nouvelle requête à pondre et là, je sèche complètement...


    J'ai donc 3 tables :




    Ici, je dois créer dans la table Habite, pour une Personne donnée, toutes les occurences possibles avec toutes les villes existantes dans la DB.
    Donc, si j'ai 4 villes (A,B,C et D), et que Personne1 habite B (P1B), je dois également créer P1A, P1C et P1D (il habitera donc aux 4 endroits). Attention à ne pas recréer P1B.


    Si vous voyez une solution...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 463
    Points : 114
    Points
    114
    Par défaut
    C'est bon, j'ai trouvé...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    insert into Habite(Pers_id, Ville_Id) 
    select Pers_Id, Ville_Id from Personne,Ville 
    where Pers_Id = @Pers_Id and Ville_Id not in(
    	select V.Ville_Id 
    	from Ville as V inner join Habite as H
    		on V.Ville_Id = H.Ville_id
    	inner join Personne as P
    		on H.Pers_Id = P.Pers_id
    	where P.Pers_Id = @Pers_Id

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

Discussions similaires

  1. Interprétation variable dans requête particulière
    Par Chris_fr7 dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2009, 22h19
  2. Requêtes particulières avec hibernate
    Par carnifex dans le forum Hibernate
    Réponses: 1
    Dernier message: 06/12/2008, 00h22
  3. Cherche requête efficace pour ma question
    Par nico1214 dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/11/2008, 14h36
  4. [Joomla!] Cherche requête qui affiche la liste des articles ?
    Par B-Pascal dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 02/09/2008, 12h09
  5. Requête particulière dans un état
    Par NooD dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/07/2006, 16h58

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