Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แนวคิด Derived Table เกี่ยวกับ MySQL Subquery


เมื่อ Subquery เริ่มที่ FROM Clause ผลลัพธ์เรียกว่า Derived Table Subquery ประเภทนี้เรียกว่า Materialized Subquery ต้องมี Alias เสมอ ตัวอย่างใช้ตาราง cars:

mysql> Select * from Cars;
+------+--------------+---------+
| ID   | Name         | Price   |
+------+--------------+---------+
|    1 | Nexa         |  750000 |
|    2 | Maruti Swift |  450000 |
|    3 | BMW          | 4450000 |
|    4 | VOLVO        | 2250000 |
|    5 | Alto         |  250000 |
|    6 | Skoda        | 1250000 |
|    7 | Toyota       | 2400000 |
|    8 | Ford         | 1100000 |
+------+--------------+---------+
8 rows in set (0.02 sec)

Query สร้าง Derived Table

mysql> Select AVG(P) FROM (SELECT Name, SUM(Price) P FROM cars GROUP BY Name) AS totals;
+--------------+
| AVG(P)       |
+--------------+
| 1612500.0000 |
+--------------+
1 row in set (0.76 sec)

Derived Table คืนราคารวมแต่ละรถ (Group by Name) แล้ว Outer Query หาค่าเฉลี่ย

รัน Subquery เพียงอย่างเดียว (ดู Derived Table)

mysql> SELECT Name, SUM(Price) P FROM cars GROUP BY Name;
+--------------+---------+
| Name         | P       |
+--------------+---------+
| Alto         |  250000 |
| BMW          | 4450000 |
| Ford         | 1100000 |
| Maruti Swift |  450000 |
| Nexa         |  750000 |
| Skoda        | 1250000 |
| Toyota       | 2400000 |
| VOLVO        | 2250000 |
+--------------+---------+
8 rows in set (0.03 sec)