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 :

Clause WHERE IN


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Clause WHERE IN
    Bonjour

    Je suis confronté à un problème et je ne sais plus apr quel bout le prendre.

    Voici mon code, les explciations suivent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT BI.id_bien, AB.id_client from biens BI
    inner join acquereur AB on BI.ville in (AB.ville)
    where BI.id_bien = 7821
    Donc j'ai deux tables :
    - la table bien contient des bien immobilier avec plein de renseignement, dont un champs précis qui m'occupe, la ville où il se trouve.
    - la atable acquereur qui contient de gens et leur recherche de bien avec des critères dont celui qui m'occupe, une liste de ville.

    Cette liste de ville est enregistrée en prenant le nom de la ville, une virgule et un espace. Elle est stockée dans un champs VARCHAR.
    Ma requête va donc me chercher, pour un bien précis, tous les acquereur qui cherche un bien dans cette ville. Pour l'instant elle ne me remonte que ceux qui n'ont qu'une seule ville dans leur liste, tous les autres sont ignorés.
    J'ai testé en faisant un LIKE, j'ai mis au point une fonction qui me travaille la chaine de caratères pour rajouter les quotes, essayé de changer de sens entre CO.ville et AB.Ville. Mais rien, nada.

    Donc je viens vous demander de l'aide parce que je sèche comme jambon dans les Pyrénnées.

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Je crois que tu allais plutot faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT BI.id_bien, AB.id_client FROM biens BI
    INNER JOIN acquereur AB ON BI.ville = AB.ville 
    WHERE BI.id_bien = 7821
    NB : IN ne supporte pas de variable.
    La seule façon est d'utilisé une sous requête dans le in
    Genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select *
    from t2
    where ch in (select ch from t1)

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide

    Avec le =, çà marche pas, il ne me remonte que ceux qui ont une seule ville dans leur liste, donc ceux qui ont plusisuer ville sont ignoré, même s'ils ont al ville du bien considéré.

    Quant à ta deuxième requête je peux pas la mettre en oeuvre. Dans mon champ AB.Ville il y une chaine de caratère du type : "NANTES, SAUTRON, ORVAULT" et c'est dans cette liste qu'il faut chercher, d'où l'idée du IN.
    De fait je vois pas bien comment je pourrais metrte en place un sous requête pour trouver çà, ou alors j'ai pas compris.

    Merci

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Alors vous avez à la base très mal conçu votre model de base de données !
    Vous devez passer par la logique procédurable pour le faire.
    Je vais essayer de reproduire la situation.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    MErci pour ton aide.

    Pour répondre à la question de conception : je maudis le précédent développeur qui a fabriqué ce truc que je dois rependre et j'ajouterais : heureusement que j'ai les cheveux longs, c'est plus facile pour ce les arracher !

    En tout cas merci pour ton aide, aprce là, vraiment je vois plus bien comment m'en sortir.

    Kenavo

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Quelle est la version de SQL Serveur que vous utilisez ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

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

Discussions similaires

  1. [super requete] Dumper un model avec une clause where
    Par elievar dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2005, 17h05
  2. Ordre des tests dans la clause WHERE
    Par Tans98 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/09/2004, 10h52
  3. Problème clause WHERE
    Par Invité dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/06/2004, 15h07
  4. probleme avec le caractere 'Z' dans ma clause WHERE
    Par dibox dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/04/2004, 12h21
  5. [ character en simple cote ] clause Where
    Par hocinema dans le forum DB2
    Réponses: 3
    Dernier message: 20/02/2004, 10h17

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