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

Accès aux données Discussion :

requetes sql imbriquées


Sujet :

Accès aux données

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut requetes sql imbriquées
    bonjour a tous,
    j'ai un petit souci avec une de mes requetes imbriquée.la situation:
    j'ai deux tables une qui liste des contacts(id,nom,prenom....) et une qui liste des entreprises(id,designation,....) appartenant a ces contacts.
    avec la requete1 suivante je peu lister les clients des commerciaux dont je fourni le login en parametre:

    SELECT Nom
    FROM contacts AS contacts_2
    WHERE (lieA IN
    (SELECT idCompte
    FROM contacts AS contacts_1
    WHERE (login = 'ts')))

    le resultat de cette requete me fourni 2 noms:ex

    Nom
    client1
    client2

    je voudrais maintenant faire une requete2 en integrant la requete1 en parametre dans un where:
    exemple:

    SELECT DISTINCT organisation$.idOrganisation, contacts.Nom
    FROM organisation$ CROSS JOIN contacts
    WHERE (contacts.Nom IN
    (SELECT Nom
    FROM contacts AS contacts_2
    WHERE (lieA IN
    (SELECT idCompte
    FROM contacts AS contacts_1
    WHERE (login = 'ts')))
    ))
    en sachant que requete1 renvoie 2 valeurs je voudrai savoir si je peu faire une telle manipulation.
    en esperant avoir ete le plus clair possible merci d'avance.

  2. #2
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Normalement, il ne devrait pas y avoir de problème. Puisque tu peux écrire
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    where champ in liste_de_valeurs
    même si ta requête imbriquée renvoie plus d'une valeur, ça devrait fonctionner. L'as-tu testée ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    ouiii effectivement je l'ai tester. avec requete 2 j'esper obtenir le num (id) des sociétés des clients que j'obtien grace a requete1. le souci c'est que requete2 me renvoi le num de l'ensemble sociétés de la base.
    pour mes test j'avai prerempli la base avec des clients et leurs société. (au nombre de trois).
    normalement je pense qu'en ayant 2 resultats grace a requete1, j'orai du obtenir 2 sociétés en resultat ( celle de client1 et client2) or si j'enleve le DISTINCT j'obtiens:

    idOrganisation

    id_société1
    id_société2
    id_société3
    id_société1
    id_société2
    id_société3

    voila tou mon probleme.............

  4. #4
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    A quoi ça sert de selectionner Nom 2 fois
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT organisation$.idOrganisation, contacts.Nom
    FROM organisation$ CROSS JOIN contacts
    WHERE (contacts.Nom IN
    (SELECT Nom
    FROM contacts AS contacts_2
    WHERE (lieA IN
    (SELECT idCompte
    FROM contacts AS contacts_1
    WHERE (login = 'ts'))));
    Pourquoi ne pas le selectionner directement :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT organisation$.idOrganisation, contacts.Nom
    FROM organisation$ CROSS JOIN contacts
    WHERE (lieA IN
    (SELECT idCompte
    FROM contacts AS contacts_1
    WHERE (login = 'ts')));
    Là le problème à changer, ça ne concerne plus le in mais la requête en général.
    Je te conseilles d'exprimer clairement ta requête et de poster un exemple de données avec le résultat attendu et le résultat que tu obtiens.

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    ok je v y reflechir calmement je v reposter tou ca apres.pour le mom g un petit empechement...merci encore je pense kon en reparlera demain carrement.++

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    j'ai travaillé dessus ce week-end et l'erreur était pas énorme énorme.
    finalement (mieux vau tard que jamais) j'ai trouver la solution a mon problème.
    requête définitive:

    SELECT nomOrganisation
    FROM organisation$
    WHERE (idOrganisation IN
    (SELECT DISTINCT contacts.idOrganisation
    FROM contacts CROSS JOIN
    organisation$ AS organisation$_1
    WHERE (contacts.lieA IN
    (SELECT idCompte
    FROM contacts AS contacts_1
    WHERE (login = 'ts')))))

    a mon avis mon souci venait du fait que je faisais la jointure dans le premier "from" hors en me relisant c'est tout a fait inutile vu que que la fait déjà dans le select imbriqué.

    comme je dit tjrs c'est souvent ce qui est évident qui pose le plus de souci mai la c'est réglé.
    en tout cas merci pour votre aide sur ce point.je ne manquerai pa de venir vous voir pour mes problèmes futur....

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

Discussions similaires

  1. requete SQL (imbriqué?)
    Par leame dans le forum Langage SQL
    Réponses: 9
    Dernier message: 02/07/2010, 14h21
  2. [1.x] Requetes SQL imbriquées
    Par pmithrandir dans le forum Symfony
    Réponses: 1
    Dernier message: 30/12/2009, 21h31
  3. requete sql imbriquée
    Par Ludo75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/07/2008, 12h06
  4. Requetes SQL imbriquées
    Par olibara dans le forum Requêtes
    Réponses: 0
    Dernier message: 25/02/2008, 20h34
  5. Requete Sql imbriqué
    Par NeHuS dans le forum ASP
    Réponses: 11
    Dernier message: 01/06/2006, 12h17

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