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

PHP & Base de données Discussion :

Simplifier les requêtes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    323
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 323
    Par défaut Simplifier les requêtes
    Bonjour

    J'aimerais savoir comment on s'y prend pour faire une requêtes sur un tableau donnée par une autre requête ceci dans le souci d'attaquer le moins possible la base de données pour éviter les messages du genre "le temps de connexion à la BD atteint".

    je m'explique mieux.

    SI je veux compter le nombre de fois un n° present dans la table 1 a participer dans la table 2.

    Ceci je le fait pas imbrication de requête ou par boucle ce dernier étant fastidieu pour la BD car à chaque incrémentation il ya requête dans la BD.

    Alors je doit trouver un moyen pour faire une seule fois la requête pour sortir les éléments de la table 2 et ensuite de façon virtuelle effectuée une autre requête sur cette table sans attaquer encore la BD.

    Merci de m'aider

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Avec une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*)  FROM table1 JOIN table2 on table1.champ = table2.champ
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    323
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 323
    Par défaut
    Ok

    D'abord J'aimerai savoir si ta requête est différente de celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM table1 a, table2 b WHERE a.champ=b.champ
    Ensuite le but de ma question était de savoir en général comment on s'y prend en PHP pour faire une requête dans un tableau (array) donnée par une autre requête qui a effectuée une action sur la BD.

    Je c pas si je pose mal ma question mais l'idée c'est un peu de faire une requête sur un tableau virtuelle.

    Un exemple banale :Table CLIENTS
    les colonnes
    Id - Nom - Prenoms
    les enregistrements :
    1 - Koffi - Blaise
    2 - Fabien - Andrée
    3 - François - Mouton
    4 - Dupont - Elise

    Faire une requête sur un tel tableau.

    Ma solution (imbrication de requête)
    Moi je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT p.Prenoms FROM (SELECT * FROM CLIENTS) p
    Ici je veux savoir si ces 2 requettes attaquent la BD ou c'est la seconde requête qui le fait et sort un tableau virtuel qu'attaque la première requête).

    JUSTE UN SOUCI DE NE PAS FATIGUER LA BD.

    C'est l'essentiel de ma préoccupation.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ta syntaxe de jointure avec un WHERE est mauvaise.

    On peut par contre effectivement utiliser une sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*)  FROM table1 WHERE champ IN (SELECT champ FROM table2)
    Si tu veux voir precisemment comment mysql traite une requête, tu peux utiliser la commande EXPLAIN.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    323
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 323
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ta syntaxe de jointure avec un WHERE est mauvaise.
    Un peu dur quand même.

    Ok en quoi est-ce que c'est mauvais. ne donne t'il pas le même résultat que ta requête?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    323
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 323
    Par défaut
    ok merci

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

Discussions similaires

  1. Simplifier les requêtes
    Par Freedolphin dans le forum Langage
    Réponses: 5
    Dernier message: 22/09/2008, 12h12
  2. Simplifier les requêtes et trouver une interface commune
    Par LordClaymore dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/05/2007, 16h01
  3. Réponses: 5
    Dernier message: 16/08/2005, 12h15
  4. Réponses: 44
    Dernier message: 14/03/2005, 09h43
  5. Optimisations mysql sur les requêtes SELECT: index
    Par leo'z dans le forum Débuter
    Réponses: 2
    Dernier message: 29/11/2003, 13h23

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