擁有三張表:主表 OOO 存儲款號、顏色 ID、尺碼 ID;顏色表與尺碼表分別存儲 ID 與對應代碼。需求是在查詢結果中,將顏色 ID、尺碼 ID 替換為對應的 colorid、sizeid,或直接拼接成「款號+顏色代碼+尺碼代碼」的條碼信息。
SELECT
A.*,
B.colorid,
C.sizeid
FROM OOO AS A
LEFT JOIN 顏色表 AS B ON A.顏色id = B.id
LEFT JOIN 尺碼表 AS C ON A.尺碼id = C.id;
OOO 的所有記錄均被保留,即使顏色表或尺碼表中無對應 ID,結果仍會顯示主表字段,關聯字段為 NULL。A、B、C 簡化表名引用,提升 SQL 可讀性。A.* 獲取主表所有列,B.colorid、C.sizeid 精確獲取所需代碼,避免 SELECT * 帶來的性能與維護隱患。若需直接生成條碼字符串,可在 SELECT 列表中使用拼接函數(SQL Server 使用 + 或 CONCAT):
SELECT
A.款號 + B.colorid + C.sizeid AS 條碼信息
FROM OOO AS A
LEFT JOIN 顏色表 AS B ON A.顏色id = B.id
LEFT JOIN 尺碼表 AS C ON A.尺碼id = C.id;
掌握 JOIN 語法,輕鬆應對各類多表關聯查詢需求。