Saya ada 3 jadual: jadual_latihan, diskaun_latihan dan ejen. jadual_latihan: id, nama, id_ejen, harga. diskaun_latihan: id, id_ejen, id_jadual, diskaun. Agen: ID, nama
Saya cuba menolak harga daripada jadual latihan_jadual menggunakan lajur diskaun dalam jadual latihan_diskaun seperti ini:
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;
Tapi takpe, walaupun agent_id sama, harga total column masih sama macam dulu. Apa yang boleh salah dengan pertanyaan saya? Inilah SQLfiddle jika anda memerlukannya: http://sqlfiddle.com/#!9/0cd42d/1/0
Anda tidak perlu menggunakan
group by
kerana anda tidak menggunakan sebarang fungsi agregat.Anda juga menggunakan fungsi
select case
。另一种选择是使用 mysqlif()
dengan salah.