Member 12998860 Ответов: 3

Я не понимаю использования подзапросов SQL


Всем привет
Я следую курсу стэнфордских баз данных профессора Джей Видома
В одной из своих лекций у нее был такой запрос, где она рассказывала о важности подзапросов в предложении FROM

Это таблица студентов в csv fomat
"sID","sName","GPA","sizeHS"
"123","Amy","3.9","1000"
"234","Bob","3.6","1500"
"345","Craig","3.5","500"
"456","Doris","3.9","1000"
"567","Edward","2.9","2000"
"678","Fay","3.8","200"
"789","Gary","3.4","800"
"987","Helen","3.7","800"
"876","Irene","3.9","400"
"765","Jay","2.9","1500"
"654","Amy","3.9","1000"
"543","Craig","3.4","2000"

select *
from(select sID, sName, GPA, GPA*(sizeHS/1000.0) as scaledGPA 
from Student) G
where abs(G.scaledGPA - GPA) > 1.0


Что я уже пробовал:

Я попробовал это сделать без подзапроса в части FROM вот так:
select sID, sName, GPA, GPA*(sizeHS/1000.0) as scaledGPA 
from Student
where abs(scaledGPA - GPA) > 1.0

Оба запроса дали один и тот же результат. Так в чем же преимущество или отличие запроса, сделанного профессором Видомом?

RedDk

Это хороший вопрос. На самом деле это вдумчивый вопрос. Разница между этими двумя вещами здесь, в CPQA, заключается в том, что заставляет наиболее информированных авторов решений быть полезными. Полезно в остальном гиперкритическом, бесполезном, холодном и скучном риторическом ключе, который я нахожу оскорбительным. Помощь обнаруживает, что плакат искренен в чем-то в своей встрече с языком, который он помечает, но не может продвинуться вперед с нюансом и хочет заручиться опытом других.

Спасибо за это.

3 Ответов

Рейтинг:
1

Mehdi Gholam

Подзапросы облегчают извлечение того, что вам нужно, и вы можете разбить то, что вам нужно, на шаги подзапроса и объединить их для получения результата.

Приведенный вами пример может быть сделан в указанном вами поместье, поэтому он не является хорошим образцом для использования подзапросов.

Много лет назад лучший способ узнать это был из книги access 97 (точное название которой я не помню, и я давно ее отдал).

Есть потерянные учебники, если вы ищете, например : Советы Microsoft Access: основы подзапросов[^]


Рейтинг:
1

Moin 10918476

SELECT sID,sName,GPA,sizeHS,scaledGPA FROM Student G
INNER JOIN (SELECT sID, GPA*(sizeHS/1000.0) as scaledGPA FROM Student ) GG ON G.sID=GG.sID
WHERE abs(GG.scaledGPA - G.GPA) > 1.0


CHill60

Это не ответ на вопрос ОП!

Рейтинг:
0

RickZeeland

Вот хороший учебник по подзапросам: Подзапросы SQL[^]