การ JOIN TABLE เข้าด้วยกัน จาก DATABASE ต่างกัน
1 min readSep 12, 2019
มีงานต้องทำการดึงข้อมูลบางส่วนจากหลาย Table และแต่ละ Table นั้นอยู่ใน Database คนละลูกกัน มีตัว key ที่ใช้อ้างถึงกันคือค่าเวลา
ตัวอย่างนี้เป็นการดึงข้อมูลมาจาก 3 Table คือ มาจาก Database 2 ลูก ดังนี้
- hdm.dbo.total AS tab1
- hdm.dbo.instrument AS tab2
- pmt.dbo.pm_bpk AS tab3
SELECT TOP (10) tab1.time AS Time,
tab1.fe2 AS FE2,
tab2.pe2 AS PE2,
tab2.le1 AS LE1,
tab2.p1_run AS P1_RUN,
tab2.p2_run AS P2_RUN,
tab2.p3_run AS P3_RUN,
tab2.p4_run AS P4_RUN,
tab2.p5_run AS P5_RUN,
tab2.p6_run AS P6_RUN,
tab3.p1_kw AS P1_kW,
tab3.p2_kw AS P2_kW,
tab3.p3_kw AS P3_kW,
tab3.p4_kw AS P4_kW,
tab3.p5_kw AS P5_kW,
tab3.p6_kw AS P6_kW
FROM hdm.dbo.total AS tab1
INNER JOIN hdm.dbo.instrument AS tab2
ON tab1.datetime = tab2.datetime
INNER JOIN pmt.dbo.pm_bpk AS tab3
ON tab2.datetime = tab3.datetime
ORDER BY Time DESC
ตัวอย่าง Results ของคำสั่ง
ถ้าต้องการประมวลผลจากค่าเดิมออกเป็นค่าใหม่ เขียนการ Select ด้วย
case xxx end ได้ดังนี้
SELECT TOP (10) tab3.p1_kw AS P1_kW,
tab3.p1_kw AS P2_kW,
tab3.p2_kw AS P3_kW,
CASE
WHEN 10 > 1THEN 1 ELSE 0
END AS P1RUN,
CASE
WHEN tab3.p2_kw AS P2_kW > '10' THEN 1 ELSE 0
END AS P2RUN,
CASE
WHEN tab3.p3_kw AS P3_kW > '10' THEN 1 ELSE 0
END AS P3RUN
FROM pmt.dbo.pm_bpk AS tab3