2011-09-02 3 views
0

Il y a un problème avec ce code MySQL. il semble être de retour plus de stock alors il devrait y avoir.Groupe de jointures multiples MySQL par

positions de table tient le stock disponible (positions multiples d'un produit) tableau orderbody contient les commandes des produits commandés (1 OrderHeader à beaucoup orderbody)

SELECT PRO.ProductID, 
     PRO.ProductCode, 
     SUM(POS.Qty) AS instock, 
     SUM(OB.Qty) AS onorder 
FROM products AS PRO 
LEFT JOIN position AS POS ON POS.ProductID = PRO.ProductID 
LEFT JOIN orderbody AS OB ON OB.ProductID = PRO.ProductID 
WHERE POS.ProductID = OB.ProductID 
GROUP BY PRO.ProductID, POS.ProductID, OB.ProductID 
  • je reçois instock 320
  • réelle quantité en stock = 40
  • nombre de positions = 2 (qté 20 chacune)

  • onOrder = 16 qté

  • nombre réel de orderbody = 8 lignes
  • fait sur commande = 8 (chacun avec qté = 1)

agit sur l'un des produits

je sais il a quelque chose à voir avec le groupe mais je ne peux pas le faire.

Appréciez toute aide reçue.

Répondre

0

J'ai eu le même problème il y a quelques jours. Essayez-le en sélectionnant à partir d'une requête séparée: SELECT ... FROM produits, (SELECT ...) ... "où vous avez les deux tables à gauche joint.essayez de tester la sous-requête par lui-même d'abord, et essayez de mettre ensemble une fois ot travaux. (une fois que vous avez les données que vous voulez, et non les doublons, parce que c'est ce qui devrait être le résultat est que vous problème.

+2

oui les exécuter comme les travaux suivants. Mais je pensais qu'il y avait un moyen de faire fonctionner ça comme je l'avais fait. Merci pour la réponse. – Ryan

0

vous sélectionnez ce PRO.ProductCode champ, mais pas le regroupement par elle, à une supposition qu'il pourrait être le problème.

+0

pas essayé le tir d'aide. une ligne pour chaque montrant ID de produit son ID, son code, ce qui est actuellement en stock et ce qui est actuellement en commande. productcode isnt utilisé de toute autre manière alors apparaître seulement sur la table. chaque ProductID a également son propre productcode (unique je sais dupliquer des colonnes unnecisary uniques mais hell why why) – Ryan

+1

il est très difficile d'offrir plus de suggestions sans voir la structure de la base de données, et quelques exemples de données, essayez de supprimer le groupe par et les colonnes sum et regardez les données brutes étant sélectionnées pour voir si vous avez plus de copies de choses alors vous attendez – bumperbox