Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2006, 09h59   #1
Invité régulier
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 6
Points : 6
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 :
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 :
... 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.
Marion_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 10h04   #2
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
j'dirai

Code :
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 ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 10h37   #3
Invité régulier
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 6
Points : 6
Malheureusement non, j'avais essayé.
Marion_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 10h46   #4
Invité régulier
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 6
Points : 6
Merci dejà pour cette réactivité.

de cette première requete :
Code :
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)
Marion_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 10h47   #5
Membre actif
 
Inscription : novembre 2006
Messages : 194
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 194
Points : 197
Points : 197
ceci devrait marcher, sinon postes le message d'erreur
Code :
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
coca25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 10h54   #6
Invité régulier
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 6
Points : 6
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....
Marion_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 11h06   #7
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
normal, tu fais pas de lien entre la table products et les autres tables

et avec ça ?
Code :
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 ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 15h40   #8
Invité régulier
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 6
Points : 6
Ah...il semble y avoir un mieux mais il ne m'affiche qu'une ligne...
Marion_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 15h45   #9
Invité régulier
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 6
Points : 6
Non il m'affiche toujours le même produit quelque soit le manufacturers_id

Merci de votre aide
Marion_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 16h17   #10
Membre actif
 
Inscription : novembre 2006
Messages : 194
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 194
Points : 197
Points : 197
ils ont peut etre tous le même modèle.
groupe par products_id
Code :
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
coca25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 16h32   #11
NoT
Membre confirmé
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 261
Points : 261
Salut,

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

Essai ça :

Citation:
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
NoT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 17h35   #12
Invité régulier
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 6
Points : 6
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 .
Marion_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 17h53   #13
Invité régulier
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 6
Points : 6
Merci infiniment.
Vous êtes super.

Bonne soirée
Marion_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 17h19   #14
NoT
Membre confirmé
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 261
Points : 261
Hésite pas à toucher et te prendre la tête dessus , c'est comme ça qu'on progresse
NoT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h37.


 
 
 
 
Partenaires

Hébergement Web