J'ai 3 tables : training_schedules, training_discounts et agents. training_schedules : identifiant, nom, agent_id, prix. training_discounts : id, agent_id, planning_id, remise. Agent : pièce d'identité, nom
J'ai essayé de soustraire le prix de la table training_schedules en utilisant la colonne discounts de la table training_discounts comme ceci :
SELECT ts.id, name, training_types, DATE_FORMAT(date_start ,'%d/%m/%Y') as date_start, DATE_FORMAT(date_end ,'%d/%m/%Y') as date_end, quota, price, td.discount, CASE price WHEN td.agent_id = 2 THEN (price - td.discount) ELSE price END as total FROM training_schedules ts LEFT JOIN training_discounts td on ts.id = td.schedule_id GROUP BY td.schedule_id;
Mais non, même si l'agent_id est le même, le prix de la colonne totale est toujours le même qu'avant. Qu'est-ce qui ne va pas avec ma requête ? Voici le SQLfiddle si vous en avez besoin : http://sqlfiddle.com/#!9/0cd42d/1/0
Vous n'avez pas besoin d'utiliser
group by
car vous n'utilisez aucune fonction d'agrégation.Vous utilisez également la fonction
select case
。另一种选择是使用 mysqlif()
de manière incorrecte.