Бағыныңқы сұрауды қолданып, сұрауды басқа сұраудың ішіне немесе өрнекке орналастыру

Маңызды :  This article is machine translated, see the disclaimer. Please find the English version of this article here for your reference.

Кейде сұраудың нәтижелерін басқа сұрауда өріс ретінде немесе сұрау өрісіне шарт ретінде қолданасыз. Мысалы, әр өнімнің тапсырыстарының аралығын көргіңіз келуі мүмкін. Аралықты көрсететін сұрауды жасау үшін, сол өнімнің тапсырыс күнін басқа тапсырыс күнімен салыстыруыңыз керек. Бұл тапсырыс күндерін салыстыру да сұрауды қажет етеді. Бұл сұрауды қосымша сұрау параметрін қолдана отырып, негізгі сұраудың ішіне орналастыруыңызға болады.

Бағыныңқы сұрауды өрнек немесе SQL көрінісі ішінде SQL нұсқауында жазуыңызға болады.

Ескерту :  Бұл мақала Access бағдарламаларына қолданылмайды — Access бағдарламасымен дерекқордың жаңа түрін құрастырып және онлайн режимінде жариялай аласыз. Қосымша ақпарат алу үшін, Access бағдарламасын жасау бөлімін қараңыз.

Бұл мақалада:

Сұраудың нәтижелерін өріс ретінде басқа сұрауда қолдану

Бағыныңқы сұрауды сұрау өрісі үшін шарт ретінде қолдану

Бағыныңқы сұраумен пайдалануға болатын жалпы SQL кілтсөздері

Сұраудың нәтижелерін өріс ретінде басқа сұрауда қолдану

You can use a subquery as a field alias. Use a subquery as a field alias when you want to use the subquery results as a field in your main query.

Ескерту : Бүркеншік ат өрісі ретінде қолданылатын бағыныңқы сұрау біреуден артық өріс қайтармайды.

Бағыныңқы сұрау бүркеншік ат өрісін бағыныңқы сұрауды пайдаланбаған кезде мүмкін болмайтын ағымдағы жолдағы басқа мәндерге байланысты мәндерді көрсету үшін қолдануыңызға болады.

Мысалы, әрбір өнім тапсырыстары аралығын көргіңіз келетін мысалға оралайық. Осы аралықты анықтау үшін, әр өнім тапсырыс күнін сол өнім тапсырыс күнімен салыстыруыңыз керек. Осы ақпаратты көрсететін сұрауды Northwind дерекқор үлгісін қолданып жасауыңызға болады.

Northwind дерекқорын орнату нұсқауы

  1. Файл қойындысындағы Жаңа түймешігін басыңыз.

  2. Қол жетімді үлгілер астында Үлгілер параметрін таңдаңыз.

  3. Northwind түймешігін басып, Жасау пәрменін таңдаңыз.

  4. Дерекқорды ашу үшін Northwind Traders бетіндегі (Бастау экраны нысан қойындысы) нұсқаулығын орындаңыз, одан кейін «Кіру» диалогтық терезесін жабыңыз.

  1. Жасау қойындысының Сұраулар тобындағы Сұраулар құрастырушысы параметрін таңдаңыз.

  2. Кестені көрсету диалогтық терезесіндегі Сұраулар қойындысын басып, Өнім тапсырыстары түймешігін екі рет басыңыз.

  3. Кестені көрсету диалогтық терезесін жабыңыз.

  4. Өнім идентификаторы және Тапсырыс күні өрістерін сұрау жасақтама торына қосу үшін, оларды екі рет басыңыз.

  5. Тордың Өнім идентификаторы бағанындағы Сұрыптау жолында Артуы бойынша пәрменін таңдаңыз.

  6. Тордың Тапсырыс күні бағанындағы Сұрыптау жолында Кемуі бойынша пәрменін таңдаңыз.

  7. Тордың үшінші бағанында Өріс жолын тінтуірдің оң жақ түймешігімен басып, контекстік мәзірде Ұлғайту пәрменін таңдаңыз.

  8. Ұлғайту диалогтық терезесінде мына өрнектерді енгізіңіз немесе қойыңыз:

    Prior Date: (SELECT MAX([Order Date]) 
    FROM [Product Orders] AS [Old Orders]
    WHERE [Old Orders].[Order Date] < [Product Orders].[Order Date]
    AND [Old Orders].[Product ID] = [Product Orders].[Product ID])

Бұл өрнек бағыныңқы сұрау болып табылады. Әрбір жол үшін бағыныңқы сұрау жолмен бұрын байланыстырылған тапсырыс күнінен ертерек соңғы тапсырыс күнін таңдайды. Бағыныңқы сұрау мәндерін негізгі сұраудың ағымдағы жолындағы мәндермен салыстыру үшін, кесте бүркеншік атын жасау үшін AS кілтсөзін пайдалану әдісін ескеріңіз.

  1. Тордың төртінші бағанының Өріс жолына мына өрнекті енгізіңіз:

    Interval: [Order Date]-[Prior Date]

Бұл өрнек бағыныңқы сұрау арқылы анықталған бастапқы күнінің мәнін пайдаланып, өнімнің әрбір тапсырыс күні мен бастапқы тапсырыс күні арасындағы аралықты есептейді.

  1. Құрастырушы қойындысындағы Нәтижелер тобында орналасқан Орындау түймешігін басыңыз.

    1. Сұрау іске қосылып, өнім атауларының тізімін, тапсырыс күндерін, бастапқы тапсырыс күндерін және тапсырыс күндері арасындағы аралықты көрсетеді. Нәтижелер алдымен өнім идентификаторы бойынша (артуы бойынша), одан кейін тапсырыс күні бойынша (кемуі бойынша) сұрыпталады.

    2. Ескерту : Өнім идентификаторы қондырмалы өріс болғандықтан, әдепкі параметр бойынша, Access бағдарламасы нақты өнім идентификаторларын емес, қондырмалы мәндерді (бұл жағдайда өнім атауын) көрсетеді. Бұл пайда болатын мәндерді өзгерткенімен, сұрыптау ретін өзгертпейді.

  2. Northwind дерекқорын жабыңыз.

Беттің жоғары бөлігі

Бағыныңқы сұрауды сұрау өрісі үшін шарт ретінде қолдану

You can use a subquery as a field criterion. Use a subquery as a field criterion when you want to use the results of the subquery to limit the values that the field displays.

Мысалы, сату бөлімінің қызметкері емес қызметкерлер өңдеген тапсырыстар тізімін қарап шыққыңыз келеді делік. Осындай тізімді жасау үшін, әрбір тапсырыстың қызметкер идентификаторын сату бөлімінің қызметкерлері емес қызметкерлердің идентификаторларымен салыстыру қажет. Осындай тізімді жасап, оны өріс шарты ретінде қолдану үшін, мына процедурада көрсетілгендей бағыныңқы сұрауды қолданасыз:

  1. Northwind дерекқорын ашып, мазмұнын қосыңыз.

  2. Кіру пішінін жабыңыз.

  3. Жасау қойындысының Басқа тобындағы Сұраулар құрастырушысы түймешігін басыңыз.

  4. Кестені көрсету диалогтық терезесінің Кестелер қойындысында Тапсырыстар және Қызметкерлер түймешігін екі рет басыңыз.

  5. Кестені көрсету диалогтық терезесін жабыңыз.

  6. «Тапсырыстар» кестесінде сұрау құрастыру торына қосу үшін, Қызметкер идентификаторы өрісін, Тапсырыс идентификаторы өрісін және Тапсырыс күні өрісін екі рет басыңыз. «Қызметкерлер» кестесінде құрастыру торына қосу үшін, Лауазым өрісін екі рет басыңыз.

  7. «Қызметкер идентификаторы» бағанының Шарттар жолын тінтуірдің оң жақ түймешігімен басып, контекстік мәзірдегі Ұлғайту пәрменін таңдаңыз.

  8. Ұлғайту жолағына мына өрнекті енгізіңіз немесе қойыңыз:

    IN (SELECT [ID] FROM [Employees] 
    WHERE [Job Title]<>'Sales Representative')

    Бұл бағыныңқы сұрау болып табылады. Ол лауазымы сату бөлімінің қызметкері болып табылмайтын қызметкер кодтарын таңдайды және сол нәтижелер жиынын негізгі сұрауға қамтамасыз етеді. Негізгі сұрау «Тапсырыстар» кестесіндегі қызметкер кодтарының нәтижелер жиыны ішінде болғанын тексереді.

  9. Құрастырушы қойындысының Нәтижелер тобындағы Жегу түймешігін басыңыз.

    Сұрау іске қосылып, сұрау нәтижелері сату бөлімінің қызметкерлері болып табылмайтын қызметкерлер өңдеген тапсырыстар тізімін көрсетеді.

Беттің жоғары бөлігі

Бағыныңқы сұраумен пайдалануға болатын жалпы SQL кілтсөздері

Бағыныңқы сұраумен пайдалануға болатын бірнеше SQL кілтсөзі бар:

Ескерту : Бұл тізім түпкілікті емес. Деректер анықтамасының кілтсөздерінен басқа бағыныңқы сұрауда кез келген жарамды SQL кілтсөзін пайдалануға болады.

  • БАРЛЫҒЫ    Бағыныңқы сұрау қайтарған әрбір жолмен салыстырған кезде шартты қанағаттандыратын жолдарды шығарып алу үшін, WHERE сөйлеміндегі ALL кілтсөзін пайдаланыңыз.

    Мысалы, факультеттегі студент деректерін талдап жатырсыз делік. Студенттер әр негізгі пәнге әр түрлі болатын ең аз GPA ұпайын жинауы керек. Негізгі пәндер мен талап етілетін ең аз GPA ұпайы «Негізгі пәндер» атты кестеде сақталады және тиісті студент мәліметтері «Студент_жазбалары» атты кестеде сақталады.

    Әрбір оқушы талап етілетін ең аз GPA ұпайынан асқан негізгі пәндердің тізімін (және талап етілетін ең аз GPA ұпайын) қарау үшін, мына сұрауды пайдалануға болады:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ANY    Бағыныңқы сұрау қайтарған жолдардың кемінде біреуімен салыстырған кезде шартты қанағаттандыратын жолдарды шығарып алу үшін, WHERE сөйлеміндегі ANY кілтсөзін пайдаланыңыз.

    Мысалы, факультеттегі студент деректерін талдап жатырсыз делік. Студенттер әр негізгі пәнге әр түрлі болатын ең аз GPA ұпайын жинауы керек. Негізгі пәндер мен талап етілетін ең аз GPA ұпайы «Негізгі пәндер» атты кестеде сақталады және тиісті студент мәліметтері «Студент_жазбалары» атты кестеде сақталады.

    Оқушы талап етілетін ең аз GPA ұпайын жинай алмаған негізгі пәндердің тізімін (және талап етілетін ең аз GPA ұпайын) қарау үшін, мына сұрауды пайдалануға болады:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] > ANY
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);

    Ескерту : Әрі SOME кілтсөзін бірдей мақсаттарға пайдалануға болады; SOME кілтсөзі ANY кілтсөзімен мағыналас.

  • EXISTS    Бағыныңқы сұраудың кемінде бір жолды қайтару қажеттігін көрсету үшін, WHERE сөйлеміндегі EXISTS кілтсөзін пайдаланыңыз. Әрі бағыныңқы сұраудың жолдарды қайтару қажеттігін көрсету үшін, EXISTS кілтсөзіне NOT арқылы кіріспе жасауға болады.

    Мысалы, мына сұрау кемінде қолда бар бір тапсырыстағы өнімдер тізімін береді:

    SELECT *
    FROM [Products]
    WHERE EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);

    NOT EXISTS арқылы сұрау кемінде қолда бар бір тапсырыста табылмаған өнімдер тізімін береді:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Негізгі сұраудың ағымдағы жолындағы мәннің бағыныңқы сұрау қайтаратын жиын бөлігі екенін тексеру үшін, WHERE сөйлеміндегі IN кілтсөзін пайдаланыңыз. Әрі негізгі сұраудың ағымдағы жолындағы мәннің бағыныңқы сұрау қайтаратын жиын бөлігі емес екенін тексеру үшін, IN кілтсөзіне NOT арқылы кіріспе жасауға болады.

    Мысалы, мына сұрау сату бөлімінің қызметкерлері болып табылмайтын қызметкерлер өңдеген тапсырыстар тізімін (тапсырыс күндерімен) береді.

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]<>'Sales Representative');

    NOT IN кілтсөзі арқылы осы жолмен бірдей сұрауды жазуға болады:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] NOT IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]='Sales Representative');

Беттің жоғары бөлігі

Ескерту : Machine Translation Disclaimer: This article has been translated by a computer system without human intervention. Microsoft offers these machine translations to help non-English speaking users enjoy content about Microsoft products, services and technologies. Because the article was machine translated, it may contain errors in vocabulary, syntax or grammar.

Дағдыларды жетілдіру
Оқыту курсымен танысыңыз
Жаңа мүмкіндіктерге бірінші болып қол жеткізу
Office Insider бағдарламасына қосылу

Осы ақпарат пайдалы болды ма?

Пікіріңіз үшін рақмет!

Пікіріңізге рақмет! Сізді Office қолдау көрсету қызметіндегі агенттердің бірімен байланыстырған жөн болуы мүмкін.

×