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 :

pb d'utilisation du resultat d'1 requete dans 1 autre


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 149
    Points : 93
    Points
    93
    Par défaut pb d'utilisation du resultat d'1 requete dans 1 autre
    Bonjour à tous,
    Je travaille actuellement sur une base de données MySql et j'ai besoin de faire une requete SQL.
    Voila ma premiere requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $req2=mysql_query("SELECT T1.ident_trajet
    FROM etape_trajet T1,etape_trajet T2,etape_trajet T3
    WHERE T1.ident_trajet = T2.ident_trajet AND T2.ident_trajet = T3.ident_trajet
    AND T1.chrono_etape>$chrono-3600 AND T1.chrono_etape<$chrono+3600
    AND T1.chrono_etape<T2.chrono_etape
    AND T1.ville='$ville_dep' AND T2.ville='$ville_arr'
    AND T3.nb_places < '$nb_places';")

    Ma deuxieme requete est tres semblable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $req1=mysql_query("
    SELECT E1.ident_trajet
    FROM etape_trajet E1, etape_trajet E2
    WHERE E1.ident_trajet = E2.ident_trajet
    AND E1.ville='$ville_dep' AND E2.ville='$ville_arr'
    AND E1.chrono_etape>$chrono-3600 AND E1.chrono_etape<$chrono+3600
    AND E1.chrono_etape<E2.chrono_etape;")
    AND NOT IN(....)
    Ainsi je voudrais utiliser les resultats de la deuxieme requete dans la deuxieme. C'est à dire si les resultats de la premiere sont 1,2 et 3
    je voudrais rajouter un NOT IN (1,2,3) dans la deuxième requête.
    Est ce possible ? Pour l'instant je ne vois pas comment faire.

    Merci d'avance de votre aide.

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je ne connais pas mySql mais a priori
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ident_Trajet NOT IN (SELECT Ident_Trajet FROM ....)
    devrait marcher

  3. #3
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    je crois qu'un des pb de mysql c'était qu'on ne pouvait pas faire de requetes imbriquées, du coup ...

    mais bon, tu as plusieurs solutions :

    la crade : dans ton "not in" tu fais le select en fait (tu mets ta premiere requete)

    AND NOT IN (SELECT ...)

    la php :
    tu te sert de ton $req1. Tu parcours ton resultat en le mettant dans une autre variable et tu l'utilise dans ton "not in"

    AND NOT IN('.$res.') (désolé pour la syntaxe, je me souviens plus )


    la procedure : si tu fais ça comme une procédure stockée, tu utilise des variables pour garder ton resultat (SELECT bidule AS mavar ...) et tu te sert de ces var pour ta deuximeme requete


    Enfin bon, je ne suis pas tres clair et en plus je ne sais pas si mySQL te permetrra de faire les solutions 1 et 3.

    En tous cas par php, t'as moy... cherche un peu ...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 149
    Points : 93
    Points
    93
    Par défaut
    Je ne connais pas mySql mais a priori
    Code:
    Ident_Trajet NOT IN (SELECT Ident_Trajet FROM ....)

    devrait marcher
    Le pb c'est qu'avec MySql les requêtes imbriquées sont impossibles, donc cela ne marche pas.

  5. #5
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    les procédures ne sont pas non plus gérées (?) je crois donc la seule solution est de passer par le php ...

    Tu récupère ce qui t'intéresse dans le $req1 et du t'en sert pour faire ta clause NOT IN

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Le pb c'est qu'avec MySql les requêtes imbriquées sont impossibles, donc cela ne marche pas
    Ext-ce que EXCEPT ou MINUS existent ?
    Sinon il y a toujours la possibilité de rajouter toutes les conditions de la première requête entre parenthèse avec un NOT devant

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 149
    Points : 93
    Points
    93
    Par défaut
    Ext-ce que EXCEPT ou MINUS existent ?
    Pour except je ne sais pô par contre MINUS n'existe pas et c'est fort regrettable. Sinon je vais utiliser une variable pour ce que je cherchais :
    NOT IN ($var)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 149
    Points : 93
    Points
    93
    Par défaut
    Merci encore de votre aide.

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

Discussions similaires

  1. utilisation du resultat d'une requete dans une autre
    Par lewhechris dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 26/09/2011, 09h05
  2. [MySQL] utiliser le resultat d'une requete dans un WHERE
    Par kakashi05 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/07/2011, 00h21
  3. Utiliser les valeurs d'une requete dans une autre requete ?!
    Par nekro65 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2009, 11h16
  4. utilisation du resultat d'une requete dans un curseur
    Par pseudobidon57 dans le forum SQL
    Réponses: 9
    Dernier message: 23/05/2007, 17h52
  5. Réponses: 3
    Dernier message: 08/10/2006, 11h05

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