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

Requêtes MySQL Discussion :

récupération multiple avec une seule requète


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut récupération multiple avec une seule requète
    Bonsoir à tous

    J'ai une question à la quelle, je supposes, il n'y a pas de réponse. :s

    On va se baser sur une requète de la forme : (exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	SELECT `id`
    	FROM `table`
    	WHERE `id` IN (
    		SELECT `id`
    		FROM `table`
    		WHERE blabla1
    	)
    	AND blabla2
    	having blabla3
    je souhaiterai récupérer :
    - bien évidemment le résultat de la requête globale
    - le résultat de la requête interne (celle qui est dans le IN)

    tout ceci pour limiter la charge de mon serveur ...

    est-ce possible ? :s

    ps : la requète est exécutée via php..

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    vu votre requet pourquoi ne pas faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from table where blabla
    car le code sera identique.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    cette requète est un exemple et sa forme n'est pas a remettre en cause ...
    (sa version complète est beaucoup plus complexe)

    merci quand même pour la proposition :s

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    trop complexe ? :s

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par rebel29270 Voir le message
    cette requète est un exemple et sa forme n'est pas a remettre en cause ...
    (sa version complète est beaucoup plus complexe)
    Bah vu l'exemple bien sur que si que sa structure est a remettre en cause.

    En plus vous utilisez la clause having sans group by ce qui est totallement incohérent (vive MySql)

    Donc partez d'un exemple concret plutôt que d'un exemple édulcoré qui n'a rien de bon.

    car la votre requête devrait s'écrire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    select des_colonnes from ma_table where blabla1 and blabla2 and blabla3

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    pourquoi faire compliqué quand on peu faire simple ?

    (je reformule en plus simple ...)

    J'ai ça comme requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM `table1`
    WHERE `id` IN (SELECT `id` FROM `table2`)
    je souhaiterai récupérer :
    - d'une part le résultat de la requête complète (ce qui est effectué normalement)
    - d'autre part le résultat de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `id` FROM `table2`
    tout ceci en une seule requête pour soulager le serveur ...

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Le cas est donc différent de l'exemple de départ (pas de notion de table1 et table2)


    Bein si votre but n'est de ramené que la colonne id de la table2, c'est implicitement la colonne id de la table1.

    Si vous voulez ramener plus de colonne de table2 il faudra passer par une jointure interne

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    Merci pour vos réponses,

    le problème n'est plus d'actualité aujourd'hui, le possesseur du site a changé d'avis.

    ++

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2014, 11h58
  2. [MySQL] Afficher les données dans un tableau html horizontal avec une seule requête au lieu de 6
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/10/2010, 11h13
  3. Réponses: 4
    Dernier message: 21/02/2010, 12h39
  4. [MySQL] Tri par champs avec une seule requête
    Par Yoks69 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/10/2008, 08h05
  5. TOP multiple en une seule requête
    Par Soobook dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 26/09/2008, 09h16

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