fabfabfabfab | Bonjour à tous.
Après avoir longuement tourné en rond, je vous soumets le problème qui me turlupine depuis plusieurs jours.
J'ai trois requêtes différentes, qui vont chercher des infos dans la même base d'un site de type site marchand. Pour plus de clarté, les voici :
Code :
- $sql="SELECT article.id_article, article.titre, historique.id_article, historique.bar_code, historique.date_envoie, COUNT(historique.priorite) AS somme FROM article, historique WHERE article.id_article = historique.id_article AND historique.bar_code LIKE 'PDR%' AND historique.date_envoie >= '$ds1' AND historique.date_envoie <= '$ds2' GROUP BY historique.id_article ORDER BY somme DESC";
- $sql2="SELECT article.id_article, article.titre, en_cours.id_article, en_cours.date_envoie, article_stock.id_article, article_stock.bar_code, article_stock.id_client, en_cours.id_client, COUNT(en_cours.priorite) AS somme FROM article, en_cours, article_stock WHERE article.id_article = en_cours.id_article AND article_stock.id_article = article.id_article AND article_stock.id_client = en_cours.id_client AND article_stock.bar_code LIKE 'PDR%' AND en_cours.date_envoie >= '$ds1' AND en_cours.date_envoie <= '$ds2' GROUP BY en_cours.id_article ORDER BY somme DESC";
- $sql3="SELECT article.id_article, article.titre, article_retard.id_article, article_retard.date_envoi, article_stock.id_article, article_stock.bar_code, article_stock.id_client, article_retard.id_client, COUNT(article_retard.statut) AS somme FROM article, article_retard, article_stock WHERE article.id_article = article_retard.id_article AND article_stock.id_article = article.id_article AND article_stock.id_client = article_retard.id_client AND article_retard.date_envoi >= '$ds1' AND article_retard.date_envoi <= '$ds2' GROUP BY article_retard.id_article ORDER BY somme DESC";
|
$ds1 et $ds2 sont des dates du formulaire de la page de la requête, pour que l'internaute puisse déterminer une période à étudier. Les trois requêtes ont pour but de lister le nombre de fois qu'un article a été prêté sur une période donnée, et il y a trois requêtes différentes car les produits sont répartis dans des tables différentes selon les critères : ceux qui sont en stock sur place, ceux qui sont prêtés, et ceux qui sont prêtés mais en retard. Pourquoi c'est réparti ainsi, je ne sais pas : j'ai récupéré la base et le site développés ainsi. Pour en revenir à mes requêtes, celles-ci marchent très bien. Les calculs sont bons, et j'obtiens des genres de "top prêt" : après chaque requête, je fais un while pour afficher une liste avec le nom, le numéro de l'article, le total "somme" pour chaque article, sans problème. Ce que je cherche à faire, c'est faire le total de ces "sommes" pour chaque article, car certains articles de la liste de la requête 2 ($sql2) se trouvent aussi dans la liste de la requête 1 ($ql), et/ou la requête 3 ($sql3).
Par exemple, dans les résultats de la requête 1 : j'ai "Livre Le Rouge et le noir" qui a une "somme" de 3 et un ID de 221, mais j'ai aussi dans ma requête 2 ces mêmes "Livre Le Rouge et le noir" avec une "somme" de 5 et toujours le même ID de 221. Par contre, je peux avoir "Les Trois mousquetaires" avec une somme de 2 et un ID de 153 uniquement dans les résultats de la requête 1.
Et j'ai besoin d'avoir "Livre Le Rouge et le noir" : 8 (3+5).
J'ai tenté plusieurs façons de faire, sans succès, et comme je ne suis malheureusement pas développeuse de formation, je tourne en rond. Je pense qu'on peut faire quelque chose avec le fait que l'ID est en commun, mais je n'arrive pas à déterminer quelle est la meilleure piste à suivre : essayer de faire une méga-requête qui joindrait tout ça, ou calculer ça ensuite avec php d'une manière que je n'ai pas encore trouvée.
En résumé, un petit coup de pouce me serait bien utile pour m'éviter de passer encore des heures et des heures sur la mauvaise piste...! Merci par avance aux bonnes âmes qui passeraient par là.
|