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 :

Imbriquer les requêtes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut Imbriquer les requêtes
    bonjour,

    voila le petit souci que j'ai
    je selectionne dans une bdd la liste des articles commande, je fais un mysql_fetch_assoc() ce qui me retourne un tableau.

    je recupere egalement tout la liste des articles disponible en base je fais egalement un mysql_fetch_assoc()

    maintenant comment je fais pour afficher la quantite du 2eme en fonction du nom du 1er.

    je pense pas etre clair mais j'arrive pas a formuler correctement. :p

    je met le code, si cela peut aider ^^

    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
     
    	//recuperation des informations liees a la commande
    	$idcommande = $_GET["id_commande"];
    	$listeArticle = $db->sqlSelect0("*",TB_ART,"ORDER BY code");
    	$rowArticle = mysql_fetch_assoc($listeArticle);
    	$listeCommandeArticle = $db->sqlSelect("*",TB_COM_ART,"id_commande=$idcommande ORDER BY code");//la difference avec sqlSelect0, c'est qu'il selectionne tous les articles en fonctions de l'id_commande
    	$erreur = "";
     
    	//debut du traitement
    	while($rowCommandeArticle = mysql_fetch_assoc($listeCommandeArticle)){
    		$quantiteArticle = $rowArticle["quantite"];
    		$quantiteCommandeArticle = $rowCommandeArticle["quantite"];
    		$code = $rowCommandeArticle["code"];
    		$quantite = $quantiteArticle-$quantiteCommandeArticle;
    ....

    .merci
    fey

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Sois tu retravailles tes deux tableaux pour qu'ils soient agencés avec l'element commun en index.
    Soit mieux : tu fais une requete qui recupere d'un coup les elements dont tu as besoin.

  3. #3
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    bah justement je ne voit pas trop comment faire,
    je m'etais dis, si je compare les 2 tableaux se serait peut etre moins couteux en terme de perf plutot de faire un requete en plus pour chaque article

    j'avais oublie de preciser, ils sont dans deux tables differentes
    les champs on le meme nom, mais dans dans celle : TB_COM_ART il y a 2 champs suplementaires le 1er id_commande et l'autre a la fin qui est etatsotck


    maintenant pour ce que tu proposes le 1er je ne vois pas trop comment faire
    et le 2e non plus en fait ^^

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    ba classiquement :

    tu as une table qui recense tous les articles des commande :

    tl_article_commande
    ---
    id
    commande_id
    article_id

    une table qui contient les stocks :

    t_stock
    ---
    article_id
    article_nom
    stock

    Tu recuperes toutes les quantités des articles dans la commande 13134654

    SELECT article_nom, stock FROM t_stock JOIN t_commande USING (article_id) WHERE commande_id = 13134654;

  5. #5
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    oui effectivement je peux faire cela, mais il y aura toujours une requete/article
    snif

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans mon exemple il n'y a qu'une requete pour tous les articles de la commande.

  7. #7
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    ah oui j'avais mal vu/lu

    je vais allez tester cela ^^

  8. #8
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    re
    il me met cet erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur SQL !
    SELECT code, quantite FROM commande_article JOIN article USING (code) WHERE id_commande=4
    Champ: 'code' dans field list est ambigu
    c'est a dire ? il interpret mal parce que j'ai le meme nom de champ dans les deux tables ?
    si il y a une solution a part renommer le champ

    merci

  9. #9
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Il y a bien une solution : préfixer le champ par le nom de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT commande_article.code, quantite FROM commande_article ...

  10. #10
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    merci Eusebe

    sinon j'aurai une derniere petite question, comment je fais avec mysql_fetch_assoc() pour differiencer par exemple les quantites en fonction des tables ?

    merci

  11. #11
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    je reformule ^^
    c'est cool la jointure qui fonctionne correctement
    mais mon probleme maintenant est comment l'exploiter ?

    car sur un select normal je fais mysql_fetch_assoc() , cela me ressort un tableau c'est cool et facile a utiliser.
    mais la comme j'ai des champs qui porte le meme nom quand je fais le mysql_fetch_assoc() cela me donne un peu n'importe quoi.

    donc comment faut t'il faire pour pouvoir recuperer la quantite a la fois pour la table article et pour la table commande_article

    je remet le code ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT commande_article.code, article.code,article.quantite, commande_article.quantite FROM commande_article JOIN article USING (code) WHERE id_commande=$id"
    merci beaucoup
    fey

  12. #12
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Tu peux donner des alias aux données retournées. par exemple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT commande_article.code,
        article.code,
        article.quantite AS quantite_art,
        commande_article.quantite AS quantite_comart
    FROM commande_article JOIN article USING (code)
    WHERE id_commande=$id

  13. #13
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    oui effectivement c'est nickel comme cela
    merci beaucoup

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

Discussions similaires

  1. problème avec les requêtes imbriquées
    Par menoulette dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/10/2013, 11h24
  2. Quand utiliser les requêtes imbriquées ?
    Par yann18 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/06/2011, 21h11
  3. Les requêtes imbriquées
    Par nora2311 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 15/06/2009, 15h43
  4. [MySQL] Est-ce que php supporte les requêtes imbriquées ?
    Par dahan dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/03/2006, 18h50

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