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 une requête SQL [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 82
    Par défaut Simplifier une requête SQL
    Salut!!

    Voilà figurez vous que j'aimerais afficher le résultats d'une multiplication!
    alors c'est cool quand je sépare mes requetes de la façon suivante!

    Code : PHP


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    mysql_connect("localhost", "root", "") or
    die("Impossible de se connecter : " . mysql_error());
    mysql_select_db("coursphp");
     
     
    $result = mysql_query("SELECT * FROM produit p JOIN tarif b ON m.id_cote= b.id_tarif1");
    $result2 = mysql_query("SELECT * FROM produit p  JOIN tarif2 c ON p.id_cote= c.id_tarif2");
     
    $donnees = mysql_fetch_array($result);
    $donnees2 = mysql_fetch_array($result2);
     
     
     
    ?>
     
     
    <p><?php echo  $donnees['produit']; echo $donnees['prix']*$donnees['quantité'];?></p>
    <p><?php echo  $donnees2['produit']; echo $donnees2['prix']*$donnees2['quantité'];?></p>


    Donc je cherche à mettre tout ca dans une seule et meme requete et avoir le meme resultat, c'est à dire resultats de mes multiplications à la ligne!

    J'ai cherché à faire un truc comme ça:

    Code : PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $result = mysql_query("SELECT * FROM produit p JOIN tarif b ON m.id_cote= b.id_tarif1
    											   JOIN tarif2 c ON p.id_cote= c.id_tarif2	");
     
     
    $donnees = mysql_fetch_array($result);
     
     
     
     
    ?>
     
     
    <?php echo  $donnees['produit']; echo $donnees['prix']*$donnees['quantité'];?>
    <?php echo  $donnees2['produit']; echo $donnees2['prix']*$donnees2['quantité'];?>

    bien entendu ca ne marche pas puisque $donnees2 n'est pas défini!
    Donc je cherche à inclure mes deux requête dans une variable c'est possible ca??
    Alors si quelqu'un a une piste parce que la je sèche depuis un bon moment...
    MErci à vous!!

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Regardes sur ce forum au lien suivant

    Pour remplir les conditions de tes deux variables, il faudra que tu fasses le bon SELECT.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 82
    Par défaut
    Merci de ta réponse!

    Mais tu veux dire que c'est possible, on peut le faire? Afficher deux résultats grâce a une variable?
    Pour obtenir le même rendu que mon premier exemple?
    Sinon merci pour ce lien que je connaissais déjà je t'avoue mais c'est surtout pour l'affichage en php que j'ai du mal! Enfin même si je ne maîtrise pas à fond toutes les requêtes de jointure...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 82
    Par défaut Encore l'affichage de mes jointures désolé
    bon j'ai toujours du mal à afficher mes jointures comme je le souhaite!

    Je rappelle l'objectif!

    j'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $result = mysql_query("SELECT * FROM produit p JOIN tarif1 a ON p.id_produit= a.id_tarif1
      JOIN tarif2 b ON p.id_produit= b.id_tarif2	");
     
     
    $donnees = mysql_fetch_array($result);
     
     
     
     
    ?>
     
     
    <?php echo  $donnees['produit']; echo $donnees['prix']*$donnees['quantité'];?>
    Et donc je souhaite afficher le résultats de la multiplication de la quantité de mes produits par les prix! alors sur la première table c'est bon ca le calcule tranquille, mais quand je joins la deuxième table non!!

    En français ca fait:- "pour ce produit le tarif totale du premier fournisseur est de ...euros"
    -"pour le deuxième fournisseur ... tant d'euros"

    Don mon souci c'est comment afficher ca en une seule requête jointe! Ca doit être faisable je pense mais je sature!!!

    J'ai essayé en précisant mon select, mais ca affiche pas quand meme!
    Je vous remercie par avance de vos suggestion!!

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    ... sur la première table c'est bon ca le calcule tranquille, mais quand je joins la deuxième table non!!
    Ca sous entendrait que certains produits (id_produit) ne se trouveraient pas dans l'une ou l'autre table (la table tarifs2 je suppose).

    En faite, faut voir comment tes données sont réparties.
    Si la table tarif1 contient l'ensemble des produits (table produit), ou juste une partie.
    Idem, voir pour la table tarif2


    Tu pourrais faire des LEFT JOIN plutôt que des JOIN (plus restrictif).
    Puis un DISTINCT, ou un GROUP BY pour éviter les doublons.
    Exemple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM produits p
    LEFT JOIN tarif1 t1 ON t1.id_tarif1 = p.id_produit
    LEFT JOIN tarif2 t2 ON t2.id_tarif2 = p.id_produit
    GROUP BY p.id_produit
    (petite parenthèse : Il aurait été à mon sens mieux que les clés (étrangères) de tarifs1 et tarifs2 portent le même nom : id_produit)

    Enfin, fait un essai

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 82
    Par défaut
    Merci de ta réponse,

    voila la composition de mes tables en fait:

    PRODUIT
    id_produit
    produits

    Tarif1
    id_tarif1
    prix
    quantité1
    quantité2

    Tarif2
    id_tarif2
    prix
    quantité1
    quantité2

    En fait c'est indicatif l'exemple des prix, mais j'ai absolument besoin de cette organisation!
    donc ce que je veux afficher en une seule fois et a la ligne c'est:
    - pour tel produit: résultats pour table1 égale quantité * prix
    et résultats pour la table2 égale quantité*prix

    c'est pour comparer en fait et afficher le résultat surtout des deux prix mais avec une seule requete SQL!!
    Mais là je rame parce que j'ai un seul $donnees[''] bien sûr!

    Tu me comprends j'espère...
    Merci!
    P.S j'édite de nouveau: je m'aperçois que tu es de la Réunion? je suis originaire de là bas par ma mère! Voilà c'était juste pour dire ca!

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

Discussions similaires

  1. Aide pour Simplifier/optimiser une requête SQL
    Par bubu06 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/05/2012, 18h25
  2. [MySQL] Simplifier une requête sql et affichage dans un tableau
    Par Debutant10 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 01/05/2012, 14h36
  3. [SQL] Simplifier une requête SQL ?
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/04/2006, 13h50
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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