J'ai trois tables à savoir les productions, les lignes de production et les opérations.
La ligne production_lines fait référence à sa ligne de production précédente avec la colonne 'parent_id'. La profondeur des lignes de production doit être égale aux opérations.
Voici leurs relations:
Production_lines has many (child) production_lines.
Production_lines belongs to Production.
Productions has many operations.
Problème:
Je dois créer une requête de sélection qui utilise le nombre d'opérations et la quantité totale à des fins de sélection. Le problème est que les lignes de production des enfants sont dupliquées à cause de la jonction de la table des opérations. Comment puis-je obtenir la somme de la quantité des lignes de production des enfants de façon distincte?
Solution actuelle:
SELECT
`ProductionLine`.`id`,
`ProductionLine`.`operation_number`,
COUNT(DISTINCT `Production.StockCode.Operations`.id) AS 'numberOfOperations',
# This is where the problem is: It sums up including the duplicated entries due to Operations table.
SUM(ChildrenProductionLines.dozen_quantity * 12 + ChildrenProductionLines.piece_quantity) AS 'quantityOut'
FROM
`production_lines` AS `ProductionLine`
LEFT OUTER JOIN `productions` AS `Production`
ON `ProductionLine`.`production_id` = `Production`.`id`
LEFT OUTER JOIN `operations` AS `Production.Operations`
ON `Production.Operations`.`production_id` = `Production`.`id`
LEFT OUTER JOIN `production_lines` AS `ChildrenProductionLines`
ON `ProductionLine`.`id` = `ChildrenProductionLines`.`parent_id`
GROUP BY `ProductionLine`.`id`
HAVING `operation_number` < `numberOfOperations`
ORDER BY `id`;
Essayez de déplacer la 'OUTER JOIN's dans un' WHERE id IN (sous-requête) '. Ou dans un 'JOIN' avec une colonne' GROUP BY' et 'COUNT()' ... –
Au premier test, j'ai été surpris que cela fonctionne. Mais malheureusement, si j'ai essayé deux lignes de production d'enfants ayant la même douzaine de quantième, pièce_quantité, alors elle les traite comme les mêmes et produit des résultats inexacts. – Xegara
La sous-requête est-elle la seule solution? – Xegara