需求:
兩張表,線上課程表 course 表和線下表 classes 表。還有一張訂單表。訂單表中有一個字段platform 表示課程類型:0 表示線下, 1表示線上。需要關聯查詢相關訂單信息。
問題: 如果分開查詢,會導致排序的話會很麻煩,所以還是希望在sql 語句中處理。
解決:使用 sql 中的 case 來解決。
SELECT
a.id as orderId,
case a.platform when 0 then b.name when 1 then c.name end as name,
case a.platform when 0 then b.title when 1 then null end as title
FROM
order AS a
LEFT JOIN
classes AS b ON a.cid = b.id
LEFT JOIN
course AS c ON a.cid = c.id
order by a.created_at desc