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 :

[SQL] Requetes / jointures


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut [SQL] Requetes / jointures
    Bonjour à tous,

    Voila je galère toujours sur une requete...

    Grossièrement mes tables ressemblent à ca :
    orders_products : orders_id | products_id |products_model | products_name | products_quantity | ...
    orders : orders_id | orders_status | date_purchased | ...
    products : products_id | manufacturers_id | ...

    Il faut que je selectionne les modèles et leur quantité commandés (table orders) à une date et un statut donnés, jusque là ca va à peut prêt :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(orders_products.products_quantity), orders_products.products_model FROM orders, orders_products WHERE orders.orders_id=orders_products.orders_id AND orders.date_purchased='$date' AND orders.orders_status='$statut' GROUP BY orders_products.products_model ORDER BY orders_products.products_model

    ET maintenant avec un id fabricant (manufacturers_id) donné là je sèche :/

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ... AND products.manufacturers_id = '$manufacturers_id' [scrounch] orders_products.products_id ...

    Complètement newbie j'ai regardé la doc sur les jointure (LEFT) mais sans succès.
    Pardon pour cette ignorance.

    Merci à vous.

  2. #2
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    j'dirai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT SUM(orders_products.products_quantity), orders_products.products_model 
    FROM orders, orders_products, products 
    WHERE orders.orders_id=orders_products.orders_id AND orders.date_purchased='$date' AND orders.orders_status='$statut' AND orders_products.products_id=products.products_id AND products.manufacturers_id='$manufacturers_id' 
    GROUP BY orders_products.products_model 
    ORDER BY orders_products.products_model
    Dia [ Page DVP ] [ Site pro ]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Malheureusement non, j'avais essayé.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Merci dejà pour cette réactivité.

    de cette première requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(orders_products.products_quantity), orders_products.products_model FROM orders, orders_products WHERE orders.orders_id=orders_products.orders_id AND orders.date_purchased='$date' AND orders.orders_status='$statut' GROUP BY orders_products.products_model ORDER BY orders_products.products_model
    il faut qu'il filtre par rapport aux products_id obtenus ceux correspondant aux manufacturers_id désirés (dans la table products)

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Par défaut
    ceci devrait marcher, sinon postes le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT SUM(orders_products.products_quantity),
     orders_products.products_model
     FROM orders, orders_products 
    WHERE orders.orders_id=orders_products.orders_id 
        AND orders.date_purchased='$date' AND orders.orders_status='$statut'
      and products.manufacturers_id = '$manufacturers_id'
     GROUP BY orders_products.products_model 
    ORDER BY orders_products.products_model

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Merci à vous.
    Je n'ai pas d'erreur justement mais il ne filtre pas les manufacturers_id dans mon résultat.
    Pour limiter les risques de boulette j'ai déjà suprpimé la condition de date.
    Ma requête devient donc par exemple :

    SELECT SUM(orders_products.products_quantity), orders_products.products_model FROM orders, orders_products, products WHERE orders.orders_id=orders_products.orders_id AND orders.orders_status='3' and products.manufacturers_id = '82' GROUP BY orders_products.products_model ORDER BY orders_products.products_model

    Il m'affiche tous les manufacturers_id....

  7. #7
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    normal, tu fais pas de lien entre la table products et les autres tables

    et avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT SUM(orders_products.products_quantity), orders_products.products_model 
    FROM orders, orders_products 
    WHERE orders.orders_id=orders_products.orders_id AND orders.date_purchased='$date' AND orders.orders_status='$statut' AND orders_products.products_id IN (SELECT products_id FROM products WHERE manufacturers_id='$manufacturers_id') 
    GROUP BY orders_products.products_model 
    ORDER BY orders_products.products_model
    Dia [ Page DVP ] [ Site pro ]

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Ah...il semble y avoir un mieux mais il ne m'affiche qu'une ligne...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Non il m'affiche toujours le même produit quelque soit le manufacturers_id

    Merci de votre aide

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Par défaut
    ils ont peut etre tous le même modèle.
    groupe par products_id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT SUM(orders_products.products_quantity),
     orders_products.products_model, orders_products.products_id
     FROM orders, orders_products, products
    WHERE orders.orders_id=orders_products.orders_id 
        AND orders.date_purchased='$date' AND orders.orders_status='$statut'
      and products.manufacturers_id = '$manufacturers_id'
      and products.products_id = orders_products.products_id
     GROUP BY orders_products.products_model, orders_products.products_id
    ORDER BY orders_products.products_model

  11. #11
    NoT
    NoT est déconnecté
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Par défaut
    Salut,

    Dites ca vous brancherait de faire les jointure correctement, avec des JOIN ?

    Essai ça :

    SELECT SUM(orders_products.products_quantity), products.manufacturers_id
    FROM orders_products
    INNER JOIN products ON orders_products.products_id = products.products_id
    WHERE products.manufacturers_id = '$manufacturers_id'
    GROUP BY products.manufacturers_id
    ORDER BY products.manufacturers_id

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Tout d'abord un grand merci à vous tous, vraiment.
    Je suis bluffée par votre réactivité.

    La solution de coca25 a l'air de fonctionner.
    Celle de NoT est sans doute plus conforme mais il manque des critères j'ose a peine y toucher .

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Par défaut
    Merci infiniment.
    Vous êtes super.

    Bonne soirée

  14. #14
    NoT
    NoT est déconnecté
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Par défaut
    Hésite pas à toucher et te prendre la tête dessus , c'est comme ça qu'on progresse

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

Discussions similaires

  1. Requete SQL avec jointure sur trois tables
    Par pit2121 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/05/2008, 23h07
  2. Optimisation requete SQL ,plusieurs jointure ?
    Par mamiberkof dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/02/2008, 16h39
  3. Requete SQL avec jointure multiple
    Par kissskoool dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/01/2008, 01h07
  4. Réponses: 10
    Dernier message: 14/09/2007, 14h02
  5. Ecriture Requete SQL auto-jointure
    Par telynor dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/05/2007, 23h50

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