je la requête suivante:requêtes affiche données différentes à chaque fois que je lance dans Mysql
SELECT pr_production_units_details.id AS idProductionUnit,
pr_production_units_details.production_units_detail AS productionUnit,
IF(pr_varieties.variety IS NULL, 'SIN SEMBRAR O ERR', pr_varieties.variety)
AS variety
FROM pr_production_units_details
LEFT JOIN
(SELECT MAX(sw_sowing.id) AS ids, sw_sowing.id_production_unit_detail,
sw_sowing.id_variety
FROM sw_sowing
WHERE sw_sowing.status != 0
AND sw_sowing.id_tenant = 1
AND YEARWEEK(sw_sowing.date) <= 201741
GROUP BY sw_sowing.id_production_unit_detail, id_variety
ORDER BY ids DESC
) AS sw
ON pr_production_units_details.id = sw.id_production_unit_detail
INNER JOIN pr_varieties ON sw.id_variety = pr_varieties.id
WHERE pr_production_units_details.id_grouper_detail = 1
AND pr_production_units_details.status = 100
AND pr_production_units_details.id_tenant = 1
GROUP BY pr_production_units_details.id
qui me amène le résultat suivant:
------------------------------------------------
idProductionUnit | productionUnit | variety
------------------------------------------------
1 | 1 | YELLOW
------------------------------------------------
2 | 2 | YELLOW
------------------------------------------------
3 | 3 | YELLOW
------------------------------------------------
Le résultat ci-dessus est très bien, mais à chaque fois Je lance la requête, la colonne de variété change ses valeurs, qui est:
------------------------------------------------
idProductionUnit | productionUnit | variety
------------------------------------------------
1 | 1 | YELLOW
------------------------------------------------
2 | 2 | BLUE
------------------------------------------------
3 | 3 | YELLOW
------------------------------------------------
aussi me donne le résultat suivant:
------------------------------------------------
idProductionUnit | productionUnit | variety
------------------------------------------------
1 | 1 | BLUE
------------------------------------------------
2 | 2 | YELLOW
------------------------------------------------
3 | 3 | YELLOW
------------------------------------------------
Je ne sais pas si elle doit être vu par l'ORDER BY ou GROUP BY, mais je n'ai pas compris parce qu'il me montre des données différentes.
J'espère que vous pouvez m'aider!
Merci!
Ce GROUP BY est invalide. Suscitera une erreur sur les versions les plus récentes de MySQL (sauf en mode compatibilité), et retournera des données imprévisibles avec des versions plus anciennes. La règle GROUP BY générale dit: "Si une clause GROUP BY est spécifiée, chaque référence de colonne dans la liste SELECT doit soit identifier une colonne de regroupement soit être l'argument d'une fonction set." – jarlh
Comme @jarlh a dit, vous devez utiliser une fonction d'agrégation ou de groupe sur tous dans la liste des colonnes de sélection –
Je suis désolé, je suis nouveau dans mysql pouvez-vous me donner un exemple s'il vous plaît! @jarlh –