การรวมตาราง

การรายงานผลด้วย SQL

Tyler Pernes

Learning & Development Consultant

รายงานเป้าหมาย

Gold Medals by Demographic Group
(Western European Countries Only)
+----------+--------------------+-------+
| season   |  demographic_group | golds |
|----------+--------------------+-------|
| Winter   | Male Age 26+       | 13    |
| Winter   | Female Age 26+     | 8     |
| Summer   | Male Age 13-25     | 7     |
| Summer   | Female Age 13-25   | 6     |
| Winter   | Male Age 13-25     | 4     |
| Summer   | Male Age 26+       | 4     |
| Winter   | Female Age 13-25   | 4     |
| Summer   | Female Age 26+     | 2     |
+----------+--------------------+-------+
การรายงานผลด้วย SQL

ตารางที่เกี่ยวข้อง

การรายงานผลด้วย SQL

ตารางที่เกี่ยวข้อง

การรายงานผลด้วย SQL

ตัวเลือก A: JOIN ก่อน แล้วค่อย UNION

การรายงานผลด้วย SQL

ตัวเลือก A: JOIN ก่อน แล้วค่อย UNION

ขั้นตอนที่ 1: ตั้งค่าคิวรีบนด้วย JOIN

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM summer_games AS sg
JOIN athletes AS a 
ON sg.athlete_id = a.id;
Query ran successfully!
การรายงานผลด้วย SQL

ตัวเลือก A: JOIN ก่อน แล้วค่อย UNION

ขั้นตอนที่ 2: ตั้งค่าคิวรีล่าง + UNION ทั้งสอง

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM summer_games AS sg
JOIN athletes AS a 
ON sg.athlete_id = a.id
UNION ALL
SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM winter_games AS wg
JOIN athletes AS a 
ON wg.athlete_id = a.id;
การรายงานผลด้วย SQL

ตัวเลือก B: UNION ก่อน แล้วค่อย JOIN

การรายงานผลด้วย SQL

ตัวเลือก B: UNION ก่อน แล้วค่อย JOIN

ขั้นตอนที่ 1: สร้าง UNION เริ่มต้น

SELECT 
    athlete_id, 
    gold  
FROM summer_games AS sg
UNION
SELECT 
    athlete_id, 
    gold  
FROM winter_games AS wg;
การรายงานผลด้วย SQL

ตัวเลือก B: UNION ก่อน แล้วค่อย JOIN

ขั้นตอนที่ 2: แปลงเป็น subquery + JOIN

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM
    (SELECT 
         athlete_id, 
         gold  
    FROM summer_games AS sg
    UNION ALL
    SELECT athlete_id, gold  
    FROM winter_games AS wg) AS g
JOIN athletes AS a 
ON g.athlete_id = a.id;
การรายงานผลด้วย SQL

การเปรียบเทียบ

ตัวเลือก A

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM summer_games AS sg
JOIN athletes AS a 
ON sg.athlete_id = a.id
UNION ALL
SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM winter_games AS wg
JOIN athletes AS a 
ON wg.athlete_id = a.id;

ตัวเลือก B

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM
    (SELECT 
         athlete_id, 
         gold  
    FROM summer_games AS sg
    UNION ALL
    SELECT athlete_id, gold  
    FROM winter_games AS wg) AS g
JOIN athletes AS a 
ON g.athlete_id = a.id;
การรายงานผลด้วย SQL

สรุปสาระสำคัญ

  • มีหลายวิธีในการสร้างรายงานเดียวกัน
  • แบบทีละขั้นตอน = แก้ปัญหาได้ง่ายกว่า
การรายงานผลด้วย SQL

มาฝึกกันเถอะ!

การรายงานผลด้วย SQL

Preparing Video For Download...