sql მოთხოვნა ms წვდომაში. შესავალი. როგორ გავაგზავნოთ მოთხოვნა მონაცემთა ბაზაში SELECT განცხადების VBA Access სინტაქსით

გაკვეთილი მოიცავს შეკითხვის ენას: SELECT sql განაცხადი - მონაცემების შერჩევისთვის

აირჩიეთ SQL Queryგანკუთვნილია მონაცემთა ბაზიდან ნორმალური შერჩევისთვის. იმათ. თუ ჩვენ უბრალოდ გვჭირდება მონაცემების მიღება მასთან დამუშავების გარეშე და მონაცემთა ბაზაში ცვლილებების შეტანის გარეშე, მაშინ ჩვენ შეგვიძლია უსაფრთხოდ გამოვიყენოთ ეს ინსტრუმენტი.

აირჩიეთ განცხადების სინტაქსი

SELECT * FROM table_name;

ეს არის ოპერატორთან მუშაობის უმარტივესი ვარიანტი, როდესაც ჩვენ ვირჩევთ ყველა ჩანაწერს მონაცემთა ბაზის ცხრილიდან.

სიმბოლო * აღნიშნავს ყველა ჩანაწერის ამოღება ცხრილიდან. თუმცა, შედეგების ნაკრების სვეტები და რიგები არ არის დალაგებული.

მოდით შევხედოთ მაგალითებს sql მოთხოვნებიაირჩიეთ:

მაგალითი:თუ თქვენ შექმენით ადგილობრივი მონაცემთა ბაზა და შეავსეთ ცხრილები, როგორც ადრე განხილულში (ან იყენებდით sqlFiddle სერვისს), მაშინ მოდით გავუშვათ შემდეგი მაგალითი.
თქვენ უნდა აირჩიოთ ყველა ჩანაწერი მასწავლებლების ცხრილიდან

SELECT * FROM table_name LIMIT 2,3;

მაგალითში, ცხრილიდან არჩეულია 3 ჩანაწერი, დაწყებული ჩანაწერით 2.
ეს მოთხოვნა განსაკუთრებით აუცილებელია ნავიგაციის გვერდების ბლოკის შექმნისას.

რომ შეუკვეთეთ შედეგების ნაკრების ველები, ისინი ჩამოთვლილი უნდა იყოს მძიმეებით გამოყოფილი სიტყვის SELECT შემდეგ:

აირჩიეთ სახელი, ზარპლატა, პრემია მასწავლებლებისგან ORDER BY name;

აირჩიეთ სახელის, ზარპლატას, პრემიის ველების მნიშვნელობები და დაალაგეთ სახელის ველის მიხედვით (ანბანურად)


მაგალითი: DB "კომპიუტერების მაღაზია". აირჩიეთ ინფორმაცია კომპიუტერების სიჩქარისა და მეხსიერების შესახებ. გსურთ პროცესორის სიჩქარით დაყენებული შედეგი დაალაგოთ ზრდადი თანმიმდევრობით.

SELECT `Speed`, `Memory` FROM `Pc` ORDER BY 1 ASC

შედეგი:

შეგიძლიათ დაალაგოთ ორი ველის მიხედვით:

SELECT name, zarplata, premia FROM მასწავლებლები ORDER BY name DESC;

აირჩიეთ სახელის, ზარპლატას, პრემიის ველების მნიშვნელობები და დაალაგეთ სახელის ველი კლებადობით


დუბლიკატი მნიშვნელობების ამოღება SQL-ში

იმ შემთხვევაში, როდესაც თქვენ გჭირდებათ უნიკალური სტრიქონების მიღება, შეგიძლიათ გამოიყენოთ საკვანძო სიტყვამკაფიო.

მკაფიო(თარგმნა ინგლისურიდან DIFFERENCE) - არგუმენტი რომ გამორიცხავს ორმაგ მნიშვნელობებს:

„ინსტიტუტის“ მონაცემთა ბაზის მაგალითი:უნდა იცოდეს შესაძლო ვარიანტებიპრემიების ზომა. თუ არ იყენებთ Distinct-ს, შედეგი იქნება ორი იდენტური ღირებულებები. თქვენ შეგიძლიათ წაშალოთ დუბლიკატი მნიშვნელობები sql-ში Distinct შეყვანით - შედეგად, დუბლიკატი მნიშვნელობები არ მეორდება.

    SELECT სიჩქარე, მეხსიერება კომპიუტერიდან;

    შედეგი:

    კომპიუტერის ცხრილში პირველადი გასაღები არის კოდის ველი. იმის გამო, რომ ეს ველი არ არის მოთხოვნაში, არის დუბლიკატი რიგები ზემოთ მოცემულ შედეგებში.

    როდესაც თქვენ გჭირდებათ უნიკალური სტრიქონების მიღება (მაგალითად, ჩვენ გვაინტერესებს მხოლოდ პროცესორის სიჩქარისა და მეხსიერების სხვადასხვა კომბინაციები და არა ყველა ხელმისაწვდომი კომპიუტერის მახასიათებლები), მაშინ უნდა გამოვიყენოთ Distinct:

    SELECT DISTINCT სიჩქარე, მეხსიერება კომპიუტერიდან;

    SELECT DISTINCT სიჩქარე, მეხსიერება კომპიუტერიდან;

    შედეგი:

    sql აირჩიეთ დავალება 1_1. DB "ინსტიტუტი"გაუშვით შეკითხვა მასწავლებელთა ცხრილიდან ID და სახელის ასარჩევად. დაალაგეთ მასწავლებლის სახელები კლებადობით

    SQL ენა: სადაც მდგომარეობა

    პირობას აკმაყოფილებს სასჯელი
    სად
    რომელიც წერია FROM პუნქტის შემდეგ.

    ამ შემთხვევაში, მხოლოდ ის ჩანაწერები, რომლებისთვისაც პრედიკატის მნიშვნელობა არის TRUE, ჩაირთვება შედეგების კომპლექტში.

    „ინსტიტუტის“ მონაცემთა ბაზის მაგალითი:გამოიტანეთ მასწავლებლის მონაცემები მასწავლებლების ცხრილიდან, რომლის გვარიც არის ივანოვი

    მრავალი პირობა SQL-ში

    პრედიკატები (პირობები) შეიძლება შედგებოდეს ერთი გამოსახულებისგან ან გამონათქვამების ნებისმიერი კომბინაციისგან, რომელიც აგებულია ლოგიკური ოპერატორების გამოყენებით:

  1. და
  2. ან არა
  3. „ინსტიტუტის“ მონაცემთა ბაზის მაგალითი:აჩვენოს მასწავლებლის კოდი, რომლის ხელფასიც არის 10000 და ბონუსი 500

    რელატიური ოპერატორები ნაპოვნი პირობებში:
    = თანაბარი
    > მეტი ვიდრე
    >= მეტი ან ტოლი
    არა თანაბარი

    შორის SQL-ში (შორის)

    BETWEEN პრედიკატი ამოწმებს, შედის თუ არა შესამოწმებელი გამოხატვის მნიშვნელობები AND ფუნქციის სიტყვით შერწყმული სასაზღვრო გამოსახულებების მიერ მითითებულ დიაპაზონში.

    სინტაქსი:

    <Проверяемое выражение>შორის<Начальное выражение>და<Конечное выражение>

    მონაცემთა ბაზის მაგალითი "ინსტიტუტი":დაბეჭდეთ მასწავლებლის სახელი და ხელფასი, რომლის ხელფასი 5000-დან 10000-მდეა.

    მონაცემთა ბაზის მაგალითი "ინსტიტუტი":აჩვენეთ მასწავლებლის სახელი და ხელფასი, რომლის ხელფასი არ არის 5000-დან 10000-მდე დიაპაზონში.

    პრედიკატი IN

    IN პრედიკატი განსაზღვრავს, იქნება თუ არა შემოწმებული გამოხატვის მნიშვნელობა მნიშვნელობების ერთობლიობაში, რომელიც აშკარად არის განსაზღვრული.

    სინტაქსი:

    < Проверяемое выражение>[არა] IN (< набор значений> )

    <Проверяемое выражение>IN (<набор значений>)

    მონაცემთა ბაზის მაგალითი "ინსტიტუტი":აჩვენეთ მასწავლებლების სახელები, რომელთა ხელფასია 5000, 10000 ან 11000

    მონაცემთა ბაზის მაგალითი "ინსტიტუტი":აჩვენეთ მასწავლებლების სახელები, რომელთა ხელფასი არ არის ღირებულებებს შორის: 5000, 10000 ან 11000

    sql აირჩიეთ დავალება 1_3. DB "ინსტიტუტი"აჩვენეთ მასწავლებლების სახელი, ხელფასი და ბონუსი, რომელთა ბონუსი არის 2000-დან 5000 რუბლამდე.

SQL - გაკვეთილი 4. მონაცემთა მოძიება - SELECT განაცხადი

ასე რომ, ჩვენი ფორუმის მონაცემთა ბაზაში არის სამი ცხრილი: მომხმარებლები (მომხმარებლები), თემები (თემები) და პოსტები (შეტყობინებები). და ჩვენ გვინდა ვნახოთ რა მონაცემებს შეიცავს ისინი. ამისათვის არის ოპერატორი SQL-ში აირჩიეთ. მისი გამოყენების სინტაქსი ასეთია:

SELECT what_select FROM where_select;


„რა_არჩევის“ ნაცვლად უნდა მივუთითოთ ან იმ სვეტის სახელი, რომლის მნიშვნელობების ჩვენება გვინდა, ან მძიმით გამოყოფილი რამდენიმე სვეტის სახელები, ან ვარსკვლავი (*) სიმბოლო, რაც ნიშნავს ცხრილის ყველა სვეტის არჩევას. . "where_select"-ის ნაცვლად, თქვენ უნდა მიუთითოთ ცხრილის სახელი.

მოდით ჯერ შევხედოთ ყველა სვეტს მომხმარებლების ცხრილიდან:

SELECT * FROM მომხმარებლებისგან;

ეს არის მთელი ჩვენი მონაცემები, რომლებიც შევიყვანეთ ამ ცხრილში. მაგრამ დავუშვათ, რომ გვინდა შევხედოთ მხოლოდ id_user სვეტს (მაგალითად, ბოლო გაკვეთილზე, თემების ცხრილის შესავსებად, გვჭირდებოდა ვიცოდეთ, რომელი id_users არის მომხმარებლების ცხრილში). ამისათვის ჩვენ დავაზუსტებთ ამ სვეტის სახელს შეკითხვაში:

აირჩიეთ id_user მომხმარებლებისგან;

კარგად, თუ გვინდა ვიხილოთ, მაგალითად, ჩვენი მომხმარებლების სახელები და ელფოსტა, მაშინ ჩამოვთვლით ინტერესის სვეტებს, რომლებიც გამოყოფილია მძიმეებით:

აირჩიეთ სახელი, ელფოსტა FROM მომხმარებლებისგან;

ანალოგიურად, თქვენ ხედავთ რა მონაცემებს შეიცავს ჩვენი სხვა ცხრილები. ვნახოთ რა თემები გვაქვს:

SELECT * FROM თემებიდან;

ახლა ჩვენ გვაქვს მხოლოდ 4 თემა, მაგრამ რა მოხდება, თუ მათგან 100 იქნება? ვისურვებდი, რომ ისინი გამოჩნდეს, მაგალითად, ანბანური თანმიმდევრობით. ამისათვის არის საკვანძო სიტყვა SQL-ში შეკვეთამოჰყვება სვეტის სახელი, რომლითაც მოხდება დახარისხება. სინტაქსი ასეთია:

SELECT სვეტის_სახელი FROM ცხრილის_სახელიდან ORDER BY sort_column_name;



ნაგულისხმევად დალაგება ხდება ზრდადობით, მაგრამ ეს შეიძლება შეიცვალოს საკვანძო სიტყვის დამატებით DESC

ახლა ჩვენი მონაცემები დალაგებულია კლებადობით.

დახარისხება შეიძლება განხორციელდეს ერთდროულად რამდენიმე სვეტით. მაგალითად, შემდეგი შეკითხვა დაალაგებს მონაცემებს თემის_სახელის სვეტის მიხედვით და თუ ამ სვეტში რამდენიმე იდენტური სტრიქონია, მაშინ id_author სვეტი დალაგდება კლებადობით:

შეადარეთ შედეგი წინა მოთხოვნის შედეგს.

ძალიან ხშირად ჩვენ არ გვჭირდება ყველა ინფორმაცია ცხრილიდან. მაგალითად, გვინდა გავარკვიოთ, რომელი თემები შექმნა მომხმარებელმა sveta (id=4). ამისათვის არის საკვანძო სიტყვა SQL-ში სად, ასეთი მოთხოვნის სინტაქსი ასეთია:

ჩვენი მაგალითისთვის, პირობა არის მომხმარებლის ID, ე.ი. ჩვენ გვჭირდება მხოლოდ ის რიგები, რომელთა id_author სვეტი შეიცავს 4 (მომხმარებლის ID სვეტა):

ან გვინდა ვიცოდეთ ვინ შექმნა თემა "ველოსიპედები":

რა თქმა უნდა, უფრო მოსახერხებელი იქნება, თუ ავტორის პირადობის მოწმობის ნაცვლად, მისი სახელი იქნება ნაჩვენები, მაგრამ სახელები ინახება სხვა ცხრილში. მომდევნო გაკვეთილებზე ჩვენ ვისწავლით თუ როგორ ავირჩიოთ მონაცემები მრავალი ცხრილიდან. ამასობაში, მოდით გავარკვიოთ, რა პირობების დაყენება შეიძლება WHERE საკვანძო სიტყვის გამოყენებით.

ოპერატორი აღწერა
= (თანაბარი) არჩეულია მითითებული მნიშვნელობის ტოლი მნიშვნელობები

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author=4;

შედეგი:

> (მეტი) არჩეულია მითითებულზე მეტი მნიშვნელობები

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author>2;

შედეგი:

< (меньше) არჩეულია მითითებულზე ნაკლები მნიშვნელობები

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author
შედეგი:

>= (მეტი ან ტოლი) არჩეულია მითითებულ მნიშვნელობაზე მეტი და ტოლი მნიშვნელობები

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author>=2;

შედეგი:

<= (меньше или равно) არჩეულია მითითებულ მნიშვნელობაზე ნაკლები და ტოლი მნიშვნელობები

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author
შედეგი:

!= (არა თანაბარი) არჩეულია მნიშვნელობები, რომლებიც არ უდრის მითითებულ მნიშვნელობას

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author!=1;

შედეგი:

არ არის NULL ირჩევს რიგებს, რომლებსაც აქვთ მნიშვნელობები მითითებულ ველში

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author IS NOT NULL;

შედეგი:

არის NULL ირჩევს რიგებს, რომლებსაც მნიშვნელობა არ აქვთ მითითებულ ველში

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author IS NULL;

შედეგი:

ცარიელი ნაკრები - ასეთი ხაზები არ არის.

BETWEEN (შორის) არჩეულია მნიშვნელობები მითითებულ მნიშვნელობებს შორის

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author BETWEEN 1 AND 3;

შედეგი:

IN (მნიშვნელობა შეიცავს) არჩეულია მითითებული მნიშვნელობების შესაბამისი მნიშვნელობები

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author IN (1, 4);

შედეგი:

NOT IN (მნიშვნელობა არ შეიცავს) არჩეულია მითითებულის გარდა სხვა მნიშვნელობები

მაგალითი:

აირჩიეთ * თემებიდან WHERE id_author NOT IN (1, 4);

შედეგი:

მოწონება (შემთხვევა) არჩეულია მნიშვნელობები, რომლებიც ემთხვევა ნიმუშს

მაგალითი:

SELECT * თემებიდან WHERE topic_name LIKE "led%";

შედეგი:

LIKE ოპერატორის შესაძლო მეტახასიათები ქვემოთ იქნება განხილული.

არ მომწონს (არ ემთხვევა) არჩეულია მნიშვნელობები, რომლებიც არ ემთხვევა ნიმუშს

მაგალითი:

აირჩიეთ * თემებიდან, სადაც თემა_სახელი არ მოსწონს "led%";

შედეგი:

LIKE ოპერატორის მეტაგმირები

მეტა სიმბოლოების გამოყენებით ძიება შეიძლება განხორციელდეს მხოლოდ ტექსტურ ველებში.

ყველაზე გავრცელებული მეტახასიათია % . ეს ნიშნავს ნებისმიერ სიმბოლოს. მაგალითად, თუ გვინდა ვიპოვოთ სიტყვები, რომლებიც იწყება ასოებით "vel", მაშინ დავწერთ LIKE "vel%", ხოლო თუ გვინდა ვიპოვოთ სიტყვები, რომლებიც შეიცავს "club" სიმბოლოებს, მაშინ დავწერთ LIKE "%". კლუბი%". მაგალითად:

კიდევ ერთი ხშირად გამოყენებული მეტახასიათია _ . %-ისგან განსხვავებით, რომელიც აღნიშნავს რამდენიმე ან საერთოდ არ სიმბოლოს, ხაზგასმული აღნიშნავს ზუსტად ერთ სიმბოლოს. მაგალითად:

ყურადღება მიაქციეთ სივრცეს მეტახასიათსა და „თევზს“ შორის, თუ მას გამოტოვებთ, მოთხოვნა არ იმუშავებს, რადგან მეტახასიათი _ დგას ზუსტად ერთ სიმბოლოზე და სივრცე ასევე არის პერსონაჟი.

დღეისთვის ეს საკმარისია. შემდეგ გაკვეთილზე ჩვენ ვისწავლით თუ როგორ დავწეროთ მოთხოვნები ორი ან მეტი ცხრილის წინააღმდეგ. ამასობაში, სცადეთ საკუთარი მოთხოვნების გაკეთება პოსტების ცხრილის წინააღმდეგ.

ეს გაკვეთილი ეძღვნება SQL მოთხოვნებიმონაცემთა ბაზაში VBA წვდომა. ჩვენ გადავხედავთ, თუ როგორ ხდება INSERT, UPDATE, DELETE მოთხოვნები მონაცემთა ბაზაში VBA-ში და ასევე ვისწავლით თუ როგორ მივიღოთ კონკრეტული მნიშვნელობა SELECT მოთხოვნიდან.

ვინც დაპროგრამებს VBA წვდომადა SQL სერვერის მონაცემთა ბაზასთან მუშაობისას ძალიან ხშირად აწყდებიან ისეთი მარტივი და აუცილებელი ამოცანის წინაშე, როგორიცაა SQL მოთხოვნის გაგზავნა მონაცემთა ბაზაში, იქნება ეს INSERT, UPDATE თუ მარტივი SQL SELECT შეკითხვა. და რადგან ჩვენ ახალბედა პროგრამისტები ვართ, ჩვენც უნდა შეგვეძლოს ამის გაკეთება, ამიტომ დღეს ჩვენ სწორედ ამას გავაკეთებთ.

ჩვენ უკვე შევეხეთ SQL სერვერიდან მონაცემების მოპოვების თემას, სადაც დავწერეთ კოდი VBA-ში ამ მონაცემების მისაღებად, მაგალითად, სტატიაში MSSql 2008-დან ტექსტურ ფაილში მონაცემების ატვირთვის შესახებ, ან მას ასევე შევეხეთ მასალაში ცოტაა წვდომა Word-ისა და Excel-ის შაბლონიდან მონაცემების ატვირთვა, მაგრამ ასე თუ ისე, ჩვენ ამას ზედაპირულად შევხედეთ და დღეს მე გთავაზობთ ამაზე ცოტა უფრო დეტალურად ვისაუბროთ.

შენიშვნა! ყველა ქვემოთ მოყვანილი მაგალითი განიხილება Access 2003 ADP პროექტის და MSSql 2008 მონაცემთა ბაზის გამოყენებით, თუ არ იცით რა არის ADP პროექტი, მაშინ ჩვენ განვიხილეთ ეს მასალაში როგორ შევქმნათ და დავაკონფიგურიროთ Access ADP პროექტი.

წყაროს მონაცემები მაგალითებისთვის

ვთქვათ, გვაქვს ცხრილი test_table, რომელიც შეიცავს წელიწადის თვეების რიცხვებს და სახელებს (შესრულებული მოთხოვნები მართვის სტუდია)

შექმენით მაგიდა .( NOT NULL, (50) NULL) GO

როგორც უკვე ვთქვი, ჩვენ გამოვიყენებთ ADP პროექტს, რომელიც არის კონფიგურირებული MS SQL 2008-თან მუშაობისთვის, რომელშიც შევქმენი ტესტის ფორმა და დავამატე დაწყების ღილაკი ხელმოწერით. "გაიქცე", რომელიც დაგვჭირდება ჩვენი კოდის შესამოწმებლად, ე.ი. ჩვენ დავწერთ ყველა კოდს მოვლენის დამმუშავებელში " ღილაკზე დაჭერა».

მოთხოვნები მონაცემთა ბაზაში INSERT, Update, DELETE VBA-ში

იმისათვის, რომ ძალიან დიდი დრო არ დავაგვიანოთ, მოდი დაუყოვნებლივ დავიწყოთ, ვთქვათ, ჩვენ უნდა დავამატოთ რიგი ჩვენს ტესტის ცხრილს ( კოდმა კომენტარი გააკეთა)/

Private Sub start_Click() "გამოაცხადეთ ცვლადი შეკითხვის სტრიქონის შესანახად Dim sql_query როგორც სტრიქონი "ჩაწერეთ მასში საჭირო მოთხოვნა sql_query = "INSERT INTO test_table (id, name_mon) VALUES ("6", "June")" "Execute ის DoCmd RunSQL sql_query End Sub

ამ შემთხვევაში, მოთხოვნა შესრულებულია მონაცემთა ბაზის კავშირის მიმდინარე პარამეტრების გამოყენებით. ჩვენ შეგვიძლია შევამოწმოთ მონაცემები დამატებულია თუ არა.

როგორც ხედავთ, მონაცემები ჩასმულია.

ერთი ხაზის წასაშლელად ვწერთ შემდეგ კოდს.

Private Sub start_Click() "გამოაცხადეთ ცვლადი შეკითხვის სტრიქონის შესანახად Dim sql_query როგორც სტრიქონი "ჩაწერეთ მასში წაშლის მოთხოვნა sql_query = "წაშალე test_table WHERE id = 6" "გაუშვით DoCmd.RunSQL sql_query დასასრული Sub

თუ შევამოწმებთ, ვნახავთ, რომ სასურველი ხაზი წაშლილია.

მონაცემების გასაახლებლად ჩაწერეთ განახლების მოთხოვნა sql_query ცვლადზე, იმედი მაქვს აზრი გასაგებია.

აირჩიეთ მოთხოვნა მონაცემთა ბაზაში VBA-ში

აქ ყველაფერი ცოტა უფრო საინტერესოა, ვიდრე სხვა SQL კონსტრუქციებთან.

ჯერ ვთქვათ, ჩვენ უნდა მივიღოთ ყველა მონაცემი ცხრილიდან და, მაგალითად, ჩვენ დავამუშავებთ და გამოვაჩენთ შეტყობინებაში და თქვენ, რა თქმა უნდა, შეგიძლიათ გამოიყენოთ იგი სხვა მიზნებისთვის, ამისათვის ჩვენ ვწერთ შემდეგს. კოდი

Private Sub start_Click() "ცვლადების გამოცხადება" მონაცემთა ბაზიდან ჩანაწერების ნაკრებისთვის Dim RS As ADODB.Recordset "Query string Dim sql_query As String "String შემაჯამებელი მონაცემების ჩვენებისთვის შეტყობინებაში Dim str As String "შექმენით ახალი ობიექტი ჩანაწერებისთვის set RS = New ADODB .Recordset "Query line sql_query = "SELECT id, name_mon FROM test_table" "მოთხოვნის გაშვება პროექტის კავშირის მიმდინარე პარამეტრების გამოყენებით RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Loop through RS.EOF) "შეავსეთ ცვლადი, რათა გამოჩნდეს შეტყობინება str = str & RS.Fields("id") & "-" & RS.Fields("name_mon") & vbnewline "გადადით შემდეგ ჩანაწერზე RS.MoveNext Wend " გამოიტანეთ შეტყობინება msgbox str ბოლო Sub

აქ ჩვენ უკვე ვიყენებთ VBA Access მარყუჟებს ჩვენი ჩანაწერების ნაკრების ყველა მნიშვნელობის გასამეორებლად.

მაგრამ საკმაოდ ხშირად საჭიროა არა ყველა მნიშვნელობის მიღება ჩანაწერების ნაკრებიდან, არამედ მხოლოდ ერთი, მაგალითად, თვის სახელი მისი კოდით. და ამისათვის ძვირი ჯდება მარყუჟის გამოყენება, ასე რომ, ჩვენ შეგვიძლია უბრალოდ დავწეროთ მოთხოვნა, რომელიც დააბრუნებს მხოლოდ ერთ მნიშვნელობას და მივიღებთ მასზე წვდომას, მაგალითად, ჩვენ მივიღებთ თვის სახელს მე-5 კოდის გამოყენებით.

Private Sub start_Click() "ცვლადების გამოცხადება" მონაცემთა ბაზიდან ჩანაწერების ნაკრებისთვის Dim RS As ADODB.Recordset "Query string Dim sql_query As String "String საბოლოო მნიშვნელობის გამოსახატად Dim str როგორც სტრიქონი "შექმენით ახალი ობიექტი ჩანაწერების ნაკრებისთვის RS = New ADODB.Recordset "Query line sql_query = "SELECT name_mon FROM test_table WHERE id = 5" "მოთხოვნის გაშვება პროექტის კავშირის მიმდინარე პარამეტრების გამოყენებით RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Get. Fields(0) msgbox str ბოლო ქვე

უნივერსალურობისთვის აქ უკვე მივმართეთ არა უჯრედის სახელით, არამედ მისი ინდექსით, ე.ი. 0, და ეს არის პირველი მნიშვნელობა ჩანაწერების ნაკრები, საბოლოოდ მივიღეთ ღირებულება "მაისი".

როგორც ხედავთ, ყველაფერი საკმაოდ მარტივია. თუ ხშირად გჭირდებათ მონაცემთა ბაზიდან კონკრეტული მნიშვნელობის მიღება ( როგორც ბოლო მაგალითში), შემდეგ გირჩევთ, გამოიყვანოთ ყველა კოდი ცალკე ფუნქციაში (როგორ დავწეროთ ფუნქცია VBA Access 2003-ში) ერთი შეყვანის პარამეტრით, მაგალითად, თვის კოდი ( თუ გავითვალისწინებთ ჩვენს მაგალითს) და უბრალოდ, სადაც საჭიროა ამ მნიშვნელობის ჩვენება, მოვუწოდებთ ჩვენთვის საჭირო ფუნქციას საჭირო პარამეტრით და ეს არის ის, ამით საგრძნობლად შევამცირებთ VBA კოდს და გავაუმჯობესებთ ჩვენი პროგრამის აღქმას.

დღეისთვის სულ ესაა. წარმატებები!

წესები: კვადრატულ ფრჩხილებში მითითებულია კონსტრუქციის [არასავალდებულო ნაწილი]. ვერტიკალური ზოლი მიუთითებს არჩევანს შორის (var1|var2). ელიფსისი ნიშნავს შესაძლო გამეორებას რამდენჯერმე - 1 ჯერ, 2 ჯერ [, ...]

SELECT განცხადება

ავალებს Microsoft Access მონაცემთა ბაზის ძრავას დააბრუნოს ინფორმაცია მონაცემთა ბაზიდან ჩანაწერების ნაკრების სახით.

სინტაქსი

აირჩიეთ [ პრედიკატი] { * | მაგიდა.* | [მაგიდა.]ველი 1

[, [მაგიდა.]ველი2 [, ...]]}
FROM ცხრილი_გამოთქმა [, ...]




SELECT განცხადება მოიცავს შემდეგ ელემენტებს.

ელემენტი

აღწერა

პრედიკატი

ერთ-ერთი შემდეგი პრედიკატი: ALL, DISTINCT, DISTINCTROW ან TOP. პრედიკატები გამოიყენება დაბრუნებული ჩანაწერების რაოდენობის შესაზღუდად. თუ პრედიკატი არ არის მოცემული, ნაგულისხმევი არის ALL.

მიუთითებს, რომ ყველა ველი არჩეულია მითითებული ცხრილიდან ან ცხრილებიდან

მაგიდა

ცხრილის სახელი, რომლის ველებიდანაც არჩეულია ჩანაწერები

ველი 1, ველი2

ველების სახელები, რომლებიც შეიცავს მოსაპოვებელ მონაცემებს. თუ მითითებულია რამდენიმე ველი, მონაცემები იქნება აღებული მათი სახელების ჩამოთვლის თანმიმდევრობით

მეტსახელი 1, მეტსახელი 2

სვეტების თავდაპირველი სახელების ნაცვლად გამოყენებული სახელები მაგიდები

ცხრილი_გამოთქმა

ერთი ან მეტი ცხრილის სახელები, რომლებიც შეიცავს ამოსაღებ მონაცემებს.

გარე_მონაცემთა ბაზა

კომპონენტში მითითებული ცხრილების შემცველი მონაცემთა ბაზის სახელი ცხრილი_გამოთქმათუ ისინი არ არიან მიმდინარე მონაცემთა ბაზაში

შენიშვნები

ამ ოპერაციის შესასრულებლად Microsoft Access მონაცემთა ბაზის ძრავა ეძებს მითითებულ ცხრილ(ებ)ს, ამოიღებს სასურველ სვეტებს, ირჩევს სტრიქონებს, რომლებიც აკმაყოფილებენ მითითებულ პირობებს და ახარისხებს ან აჯგუფებს მიღებულ რიგებს მითითებული თანმიმდევრობით.

SELECT განცხადებები არ ცვლის მონაცემთა ბაზის მონაცემებს.

SELECT განაცხადი, როგორც წესი, არის SQL განცხადების პირველი სიტყვა (SQL განცხადება (სტრიქონი). გამოთქმა, რომელიც განსაზღვრავს SQL ბრძანებას, როგორიცაა SELECT, UPDATE ან DELETE და მოიცავს პუნქტებს, როგორიცაა WHERE ან ORDER BY. SQL განცხადებები/ სტრიქონები ჩვეულებრივ გამოიყენება შეკითხვებში და სტატისტიკურ ფუნქციებში.). SQL განცხადებების უმეტესობა არის SELECT ან SELECT...INTO განცხადებები.

SELECT განცხადების მინიმალური სინტაქსი ასეთია:

აირჩიეთ ველები FROM მაგიდა

თქვენ შეგიძლიათ გამოიყენოთ ვარსკვლავი (*) ცხრილის ყველა ველის შესარჩევად. შემდეგი მაგალითი ირჩევს ყველა ველს Employees ცხრილში.

SELECT * FROM თანამშრომლებისგან;

თუ ველის სახელი შედის FROM პუნქტში რამდენიმე ცხრილში, წინ უძღვით ცხრილის სახელი და განცხადება. «.» (წერტილი). შემდეგ მაგალითში "დეპარტამენტი" ველი წარმოდგენილია "თანამშრომლები" და "ზედამხედველები" ცხრილებში. SQL განაცხადი ირჩევს განყოფილებებს Employees ცხრილიდან და ზედამხედველების სახელებს ზედამხედველების ცხრილიდან.

აირჩიეთ თანამშრომლები. დეპარტამენტის ხელმძღვანელები. Executive Name FROM Employees INNER JOIN Executives WHERE Employees. დეპარტამენტი = მენეჯერები. დეპარტამენტი;

როდესაც ქმნით RecordSet ობიექტს, ცხრილის ველის სახელს იყენებს Microsoft Access მონაცემთა ბაზის ძრავა, როგორც ობიექტის "Field" სახელი. ჩანაწერების ნაკრები. თუ ველის სახელი უნდა შეიცვალოს ან არ არის მოწოდებული გამონათქვამით, რომელიც ქმნის ველს, გამოიყენეთ რეზერვირებული სიტყვა (რეზერვირებული სიტყვა. სიტყვა, რომელიც არის ენის ელემენტი, როგორიცაა Visual Basic. რეზერვირებული სიტყვები მოიცავს განცხადებების სახელებს, ჩაშენებული ფუნქციები და მონაცემთა ტიპები, მეთოდები, ოპერატორები და ობიექტები.) AS. შემდეგი მაგალითი გვიჩვენებს, თუ როგორ გამოიყენება "Day" სათაური დაბრუნებული ობიექტის დასასახელებლად ველიმიღებულ ობიექტში ჩანაწერების ნაკრები.

SELECT დაბადების დღე AS Day FROM თანამშრომლებისგან;

აგრეგატულ ფუნქციებთან ან მოთხოვნებთან მუშაობისას, რომლებიც აბრუნებენ ობიექტების ორაზროვან ან იდენტურ სახელებს ველი, თქვენ უნდა გამოიყენოთ AS პუნქტი სხვა ობიექტის სახელის შესაქმნელად ველი. შემდეგ მაგალითში, დაბრუნებული ობიექტი ველიმიღებულ ობიექტში ჩანაწერების ნაკრებიენიჭება სახელწოდება „აღწერა“.

SELECT COUNT(EmployeeCode) AS Census FROM Employees;

SELECT განცხადებასთან მუშაობისას შეგიძლიათ გამოიყენოთ დამატებითი პუნქტები მოძიებული მონაცემების შემდგომი შეზღუდვისა და ორგანიზებისთვის. დამატებითი ინფორმაციისთვის იხილეთ დახმარების თემა იმ შეთავაზებისთვის, რომელსაც იყენებთ.

პუნქტი FROM

განსაზღვრავს ცხრილებს და შეკითხვებს, რომლებიც შეიცავს SELECT განცხადებაში ჩამოთვლილ ველებს.

სინტაქსი

აირჩიეთ ველი_სიტი
FROM ცხრილი_გამოთქმა

SELECT განცხადება, რომელიც შეიცავს FROM პუნქტს, მოიცავს შემდეგ ელემენტებს:

ელემენტი

აღწერა

ველი_სიტი

ცხრილი_გამოთქმა

ერთი ან მეტი ცხრილის განმსაზღვრელი გამოხატულება - მონაცემთა წყაროები. გამოთქმა შეიძლება იყოს ცხრილის სახელი, შენახული მოთხოვნის სახელი ან შედეგის გამოხატულება, რომელიც აგებულია INNER JOIN, LEFT JOIN ან RIGHT JOIN ოპერატორის გამოყენებით.

გარე_მონაცემთა ბაზა

სრული გზა გარე მონაცემთა ბაზაში, რომელიც შეიცავს ყველა ცხრილს, რომელიც მითითებულია ცხრილი_გამოთქმა

შენიშვნები


SELECT განცხადების შემდეგ საჭიროა FROM პუნქტის არსებობა.

თანმიმდევრობით, რომლითაც არის ჩამოთვლილი ცხრილები ცხრილი_გამოთქმაარ აქვს მნიშვნელობა.

მიბმული ცხრილების გამოყენება (დაკავშირებული ცხრილი. ცხრილი, რომელიც ინახება ფაილში, რომელიც არ არის ღია მონაცემთა ბაზის ნაწილი, მაგრამ ხელმისაწვდომია Microsoft Access-დან. მომხმარებელს შეუძლია დაამატო, წაშალოს და შეცვალოს ჩანაწერები დაკავშირებულ ცხრილში, მაგრამ არ შეუძლია შეცვალოს მისი სტრუქტურა .) პუნქტის IN-ის ნაცვლად, შეგიძლიათ გარე მონაცემთა ბაზიდან მონაცემების მოპოვების პროცესი უფრო მარტივი და ეფექტური გახადოთ.

ქვემოთ მოყვანილი მაგალითი გვიჩვენებს, თუ როგორ უნდა მიიღოთ მონაცემები თანამშრომლების ცხრილიდან.

აირჩიეთ გვარი, სახელი

თანამშრომლებისგან;

მიუთითებს SQL მოთხოვნებისთვის არჩეულ ჩანაწერებს (SQL (Structured Query Language). სტრუქტურირებული შეკითხვისა და მონაცემთა ბაზის პროგრამირების ენა, რომელიც ფართოდ გამოიყენება რელაციურ DBMS-ებში მონაცემების წვდომისთვის, შეკითხვისთვის, განახლებისთვის და მანიპულირებისთვის.)

სინტაქსი

აირჩიეთ ]]
FROM მაგიდა

SELECT განცხადება, რომელიც შეიცავს ამ პრედიკატებს, მოიცავს შემდეგ კომპონენტებს:

კომპონენტი

აღწერა

იგულისხმება, თუ პრედიკატები არ შედის. Microsoft Access მონაცემთა ბაზის ძრავა ირჩევს ყველა ჩანაწერს, რომელიც ემთხვევა SQL განცხადების პირობებს (SQL განცხადება (სტრიქონი). გამოხატულება, რომელიც განსაზღვრავს SQL ბრძანებას, როგორიცაა SELECT, UPDATE ან DELETE და მოიცავს პუნქტებს, როგორიცაა WHERE ან ORDER BY. SQL განცხადებები/სტრიქონები ჩვეულებრივ გამოიყენება შეკითხვებში და სტატისტიკურ ფუნქციებში). შემდეგი ორი იდენტური მაგალითი გვიჩვენებს, თუ როგორ უნდა დააბრუნოთ ყველა ჩანაწერი Employees ცხრილიდან.

თანამშრომლებისგან

შეკვეთა EmployeeCode-ით;

თანამშრომლებისგან

შეკვეთა EmployeeCode-ით;

გამორიცხავს ჩანაწერებს, რომლებიც შეიცავს დუბლიკატულ მონაცემებს არჩეულ ველებში. SELECT განცხადებაში ჩამოთვლილი თითოეული ველის მხოლოდ უნიკალური მნიშვნელობები შედის შეკითხვის შედეგებში. მაგალითად, თანამშრომლების ცხრილში ჩამოთვლილ ზოგიერთ თანამშრომელს შეიძლება ჰქონდეს იგივე გვარი. თუ ორი ჩანაწერი შეიცავს გვარს „ივანოვი“ გვარის ველში, შემდეგი SQL განცხადება აბრუნებს მხოლოდ ერთ ჩანაწერს, რომელიც შეიცავს გვარს „ივანოვი“.

აირჩიეთ მკაფიო გვარი

თუ DISTINCT კომპონენტი გამოტოვებულია, მოთხოვნა აბრუნებს ორივე ჩანაწერს გვარით "ივანოვი".

თუ SELECT პუნქტი შეიცავს მრავალ ველს, ველის ყველა მნიშვნელობის კომბინაცია შედის მოთხოვნის შედეგებში მხოლოდ იმ შემთხვევაში, თუ ისინი უნიკალურია ამ ჩანაწერისთვის.

შეკითხვის შედეგები, რომელიც იყენებს DISTINCT კომპონენტს, არ განახლდება სხვა მომხმარებლების მიერ განხორციელებული შემდგომი ცვლილებების ასახვის მიზნით.

გამორიცხავს მონაცემებს ჩანაწერებიდან, რომლებიც მეორდება მთლიანად და არ შეიცავს ცალკეულ ველებს იგივე მონაცემებით. დავუშვათ, რომ შეიქმნა მოთხოვნა, რომელიც აკავშირებს "მომხმარებლებს" და "შეკვეთებს" ცხრილებს "კლიენტის კოდის" ველის გამოყენებით. კლიენტების ცხრილი არ შეიცავს მომხმარებელთა ID-ის დუბლიკატ ველებს, მაგრამ ისინი არსებობენ შეკვეთების ცხრილში, რადგან თითოეულ მომხმარებელს შეიძლება ჰქონდეს რამდენიმე შეკვეთა. შემდეგი SQL განცხადება გვიჩვენებს, თუ როგორ გამოვიყენოთ DISTINCTROW კომპონენტი იმ ორგანიზაციების სიაში, რომლებმაც გააკეთეს მინიმუმ ერთი შეკვეთა, ამ შეკვეთების დეტალების ხსენების გარეშე.

აირჩიეთ განმასხვავებელი სათაური კლიენტებისგან INNER Join შეკვეთებიდან

კლიენტებზე. CustomerId = შეკვეთები. კლიენტის კოდი

შეკვეთა სათაურის მიხედვით;

თუ DISTINCTROW კომპონენტი გამოტოვებულია, მოთხოვნა იწვევს მრავალ რიგს თითოეული ორგანიზაციისთვის, რომელმაც რამდენჯერმე შეუკვეთა.

DISTINCTROW კომპონენტი მოქმედებს მხოლოდ მოთხოვნაში გამოყენებული ზოგიერთი ცხრილიდან ველების არჩევისას. DISTINCTROW კომპონენტი იგნორირებულია, თუ მოთხოვნა მოიცავს მხოლოდ ერთ ცხრილს, ან თუ ველები ამოღებულია ყველა ცხრილიდან.

TOP

აბრუნებს ჩანაწერების მითითებულ რაოდენობას, რომლებიც პირველ ან ბოლო ჩანაწერებს შორისაა ORDER BY პუნქტით მითითებულ დიაპაზონში. ვთქვათ, გსურთ აჩვენოთ 1994 წლის კლასის საუკეთესო 25 სტუდენტის სახელი.

სახელი, გვარი

WHERE გამოსაშვები წელი = 2003

ORDER BY GradePointAverage DESC;

თუ არ შეიცავთ ORDER BY პუნქტს, მოთხოვნა დააბრუნებს 25 ჩანაწერის შემთხვევით კომპლექტს Students ცხრილიდან, რომელიც აკმაყოფილებს WHERE პუნქტს.

პრედიკატი TOP არ გულისხმობს არჩევანს თანაბარ მნიშვნელობებს შორის. თუ წინა მაგალითში 25-ე და 26-ე ჩანაწერებს აქვთ იგივე GPA, მოთხოვნა დააბრუნებს 26 ჩანაწერს.

თქვენ ასევე შეგიძლიათ გამოიყენოთ PERCENT დაჯავშნილი სიტყვა პირველი ან ბოლო ჩანაწერების გარკვეული პროცენტის დასაბრუნებლად ORDER BY პუნქტით მითითებულ დიაპაზონში. დავუშვათ, რომ საუკეთესო 25-ის ნაცვლად, გსურთ აჩვენოთ სტუდენტების ქვედა 10% დამამთავრებელ კლასში.

აირჩიეთ ტოპ 10 პროცენტი

სახელი, გვარი

WHERE გამოსაშვები წელი = 2003

ORDER BY GradePointAverage ASC;

ASC პრედიკატი განსაზღვრავს მნიშვნელობების გამომავალს დიაპაზონის ქვედა ნაწილიდან. მნიშვნელობა, რომელიც მიჰყვება TOP პრედიკატს, უნდა იყოს მთელი რიცხვის ტიპი. მონაცემთა ძირითადი ტიპი, რომელიც გამოიყენება მთელი რიცხვების შესანახად. .

TOP პრედიკატი არ ახდენს გავლენას მოთხოვნის განახლებაზე თუ არა.

მაგიდა

ცხრილის სახელი, საიდანაც აღებულია ჩანაწერები.

აგრეთვე იხილეთ

SELECT განცხადება

პუნქტი FROM

WHERE პუნქტი

განსაზღვრავს, თუ რომელი ჩანაწერები მუშავდება FROM პუნქტში ჩამოთვლილი ცხრილებიდან SELECT, UPDATE ან DELETE განცხადებებით.

სინტაქსი

აირჩიეთ ველი_სიტი
FROM ცხრილი_გამოთქმა
სად შერჩევის_პირობები

SELECT განცხადება, რომელიც შეიცავს WHERE პუნქტს, მოიცავს შემდეგ ნაწილებს.

ნაწილი

აღწერა

ველი_სიტი

ველის ან ველების სახელი, რომლებიც მოძიებულია ნებისმიერ მეტსახელთან ერთად (Alias ​​(SQL). ცხრილის ან ველის ალტერნატიული სახელი გამოხატულებაში. მეტსახელები, როგორც წესი, გამოიყენება როგორც უფრო მოკლე ცხრილი ან ველის სახელები, მოგვიანებით მითითების გასაადვილებლად. პროგრამები, ორაზროვანი მითითებების თავიდან ასაცილებლად და მოთხოვნის შედეგების ჩვენებისას უფრო აღწერითი სახელების მისაღებად.), პრედიკატები (ALL, DISTINCT, DISTINCTROW ან TOP) ან SELECT განცხადების ნებისმიერი სხვა პარამეტრით.

ცხრილი_გამოთქმა

ცხრილის ან ცხრილების სახელი, საიდანაც ხდება მონაცემების მოძიება.

შერჩევის_პირობები

გამოხატულება (გამოხატვა. მათემატიკური და ლოგიკური ოპერატორების, მუდმივების, ფუნქციების, ველების სახელების, კონტროლისა და თვისებების ერთობლიობა, რომელიც იწვევს ერთ მნიშვნელობას. გამოხატვას შეუძლია გამოთვლების შესრულება, ტექსტის დამუშავება ან მონაცემების გადამოწმება.), რომელიც უნდა ემთხვეოდეს ჩანაწერებს. შეკითხვის შედეგებში.

შენიშვნები

Microsoft Access მონაცემთა ბაზის ძრავა ირჩევს ჩანაწერებს, რომლებიც აკმაყოფილებენ WHERE პუნქტში ჩამოთვლილ პირობებს. თუ WHERE პუნქტი არ არის მითითებული, მოთხოვნა აბრუნებს ცხრილის ყველა მწკრივს. თუ შეკითხვა განსაზღვრავს მრავალ ცხრილს, მაგრამ არ განსაზღვრავს WHERE ან JOIN პუნქტს, მოთხოვნა აწარმოებს დეკარტისეულ პროდუქტს (დეკარტისეული პროდუქტი. არის SQL SELECT განცხადების შესრულების შედეგი, რომელსაც აქვს FROM პუნქტი, რომელიც მიმართავს ორ ან მეტ ცხრილს და არ არის WHERE ან JOIN პუნქტი, რომელიც განსაზღვრავს შეერთების მეთოდს.) ცხრილები.

WHERE პუნქტი არ არის საჭირო, მაგრამ თუ გამოიყენება, ის უნდა შეესაბამებოდეს FROM პუნქტს. მაგალითად, შეგიძლიათ აირჩიოთ ყველა თანამშრომელი გაყიდვების განყოფილებიდან (WHERE დეპარტამენტი = "გაყიდვები") ან ყველა მომხმარებელი 18-დან 30 წლამდე (WHERE ასაკი 18 და 30 წლამდე).

თუ JOIN პუნქტი არ გამოიყენება SQL შეერთების ოპერაციისთვის რამდენიმე ცხრილზე, შედეგად მიღებული ობიექტი ჩანაწერების ნაკრებიმისი განახლება შეუძლებელი იქნება.

WHERE პუნქტი მსგავსია HAVING პუნქტისა და განსაზღვრავს არჩეულ ჩანაწერებს. მას შემდეგ, რაც ჩანაწერები დაჯგუფდება GROUP BY პუნქტით, HAVING პუნქტი ასევე განსაზღვრავს ჩანაწერს, რომელიც უნდა იყოს ნაჩვენები.

WHERE პუნქტი გამოიყენება ჩანაწერების გამოსარიცხად, რომლებიც არ საჭიროებს დაჯგუფებას GROUP BY პუნქტის გამოყენებით.

გამოიყენეთ სხვადასხვა გამონათქვამები იმის დასადგენად, თუ რომელი ჩანაწერები დაბრუნდება SQL განაცხადით. მაგალითად, შემდეგი SQL განცხადება ირჩევს ყველა თანამშრომელს, რომელთა ხელფასი აჭარბებს RUR-ს.

SELECT გვარი, ხელფასი FROM Employees WHERE ხელფასი > 21000;

WHERE პუნქტი შეიძლება შეიცავდეს 40-მდე გამონათქვამს, რომლებიც დაკავშირებულია ლოგიკური ოპერატორებით (მაგალითად, დადა ან).

თუ შეიყვანთ ველის სახელს, რომელიც შეიცავს სივრცეებს ​​ან პუნქტუაციას, ის უნდა ჩასვათ კვადრატულ ფრჩხილებში (). მაგალითად, მომხმარებლის დეტალების ცხრილი შეიძლება შეიცავდეს ინფორმაციას კონკრეტული მომხმარებლების შესახებ.

აირჩიეთ [მომხმარებლის საყვარელი რესტორანი]

არგუმენტის დაზუსტება შერჩევის_პირობები, თარიღის ლიტერალები (თარიღი სიტყვასიტყვით. სიმბოლოების ნებისმიერი თანმიმდევრობა მოქმედ ფორმატში, ჩასმული რიცხვითი ნიშნებით (#). მოქმედი ფორმატებია ენისა და სტანდარტების პარამეტრებში მითითებული თარიღის ფორმატი და თარიღის უნივერსალური ფორმატი.) უნდა იყოს წარმოდგენილი აშშ-ს ფორმატში. , მაშინაც კი, თუ თარიღის არაამერიკული ფორმატი გამოიყენება Microsoft Access მონაცემთა ბაზის ძრავის. მაგალითად, თარიღი "1996 წლის 10 მაისი" იწერება როგორც 10/5/96 დიდ ბრიტანეთში და როგორც 05/10/1996 რუსეთში. დაიმახსოვრეთ, რომ თარიღის ლიტერალი ჩაურთოთ რიცხვის ნიშნებში (#), როგორც ეს ნაჩვენებია ქვემოთ მოცემულ მაგალითებში.

გაერთიანებული სამეფოს მონაცემთა ბაზაში 1996 წლის 10 მაისის ჩანაწერების მოსაძებნად გამოიყენეთ შემდეგი SQL განცხადება:

SELECT * FROM Orders WHERE მიწოდების თარიღი = #10.05.1996#;

თქვენ ასევე შეგიძლიათ გამოიყენოთ ფუნქცია DateValue, რომელიც აღიარებს Microsoft Windows®-ის მიერ დაყენებულ საერთაშორისო პარამეტრებს. მაგალითად, რუსეთისთვის გამოიყენეთ ეს კოდი:

SELECT * FROM Orders WHERE მიწოდების თარიღი = DateValue("05/10/1996");

და შემდეგი კოდი არის გაერთიანებული სამეფოსთვის:

SELECT * FROM Orders WHERE მიწოდების თარიღი = DateValue("10/5/96");

შენიშვნა.თუ შერჩევის კრიტერიუმების მწკრივში მითითებული სვეტი არის GUID ტიპის (Replica ID (GUID). 16-ბაიტიანი ველი Microsoft Access მონაცემთა ბაზაში, რომელიც გამოიყენება რეპლიკაციის ცალსახად იდენტიფიცირებისთვის. GUID გამოიყენება რეპლიკების, ასლების ნაკრების, ცხრილების, ჩანაწერების იდენტიფიცირებისთვის. სხვა ობიექტები Microsoft Access-ის მონაცემთა ბაზებში GUID კოდებს უწოდებენ რეპლიკა კოდებს.), შერჩევის პირობებში გამოიყენება ოდნავ განსხვავებული სინტაქსი.

WHERE ReplicaID = (GUID (AB-CDEF0ABCDEF))

დარწმუნდით, რომ ჩასმული ფრჩხილები და დეფისები სწორად არის განლაგებული.

წყაროს გვერდი: http://office. /ru-ru/access/HA.aspx? pid=CH

GROUP BY პუნქტი

აერთიანებს ჩანაწერებს იგივე მნიშვნელობებით, რომლებიც მოცემულია ველების მითითებულ სიაში ერთ ჩანაწერში. შემაჯამებელი მნიშვნელობა იქმნება თითოეული ჩანაწერისთვის, თუ SQL აგრეგაციის ფუნქცია შედის SELECT განცხადებაში, მაგ. ჯამიან დათვალეთ.

სინტაქსი

აირჩიეთ ველი_სიტი
FROM მაგიდა
სად შერჩევა_მდგომარეობა

SELECT განცხადება, რომელიც შეიცავს GROUP BY პუნქტს, მოიცავს შემდეგ ელემენტებს:

ელემენტი

აღწერა

ველი_სიტი

მოძიებული ველების სახელები ნებისმიერ მეტსახელთან ერთად (Alias ​​(SQL). ცხრილის ან ველის ალტერნატიული სახელი გამონათქვამში. ფსევდონიმები, როგორც წესი, გამოიყენება როგორც უფრო მოკლე ცხრილის ან ველების სახელები პროგრამებში შემდგომი მითითების გასაადვილებლად, თავიდან აცილების მიზნით. ორაზროვანი მითითებები და უფრო ინფორმაციული სახელების მისაღებად შეკითხვის შედეგების ჩვენებისას.) და SQL სტატისტიკური ფუნქციები, პრედიკატები (ALL, DISTINCT, DISTINCTROW ან TOP) ან SELECT განცხადების სხვა პარამეტრები.

მაგიდა

შერჩევის_პირობები

შერჩევის პირობა. თუ განცხადება შეიცავს WHERE პუნქტს, მაშინ ჩანაწერებზე გამოყენების შემდეგ, მნიშვნელობები დაჯგუფდება Microsoft Access მონაცემთა ბაზის ძრავით.

ჯგუფი_ველის_სიტი

ჯგუფი_ველის_სიტი

შენიშვნები

GROUP BY პუნქტი არჩევითია.

თუ SQL სტატისტიკური ფუნქციები არ შედის SELECT განცხადებაში, შემაჯამებელი მნიშვნელობები არ გამოითვლება.

GROUP BY ველის მნიშვნელობები, რომლებიც არის Null (Null. მნიშვნელობა, რომელიც შეიძლება შეიყვანოთ ველში ან გამოვიყენოთ გამონათქვამებსა და მოთხოვნებში დაკარგული ან უცნობი მონაცემების აღსანიშნავად. Visual Basic-ში Null საკვანძო სიტყვა განსაზღვრავს Null მნიშვნელობას. ზოგიერთი ველი, მაგ. როგორც ძირითადი გასაღების ველები, არ შეიძლება შეიცავდეს Null მნიშვნელობებს.), დაჯგუფებულია და არ არის გამოტოვებული. თუმცა, ღირებულებები ნულოვანიარ არის შეფასებული არცერთი SQL სტატისტიკური ფუნქციით.

WHERE პუნქტი გამოიყენება რიგების გამოსარიცხად, რომლებიც არ საჭიროებს დაჯგუფებას. HAVING პუნქტი გამოიყენება დაჯგუფების შემდეგ ჩანაწერების გასაფილტრად.

ველები GROUP BY ველის სიიდან, რომლებიც არ შეიცავს Memo მონაცემთა ტიპს (MEMO Field მონაცემთა ტიპი. ველის მონაცემთა ტიპი Microsoft Access მონაცემთა ბაზაში. MEMO ველი შეიძლება შეიცავდეს 65535 სიმბოლომდე.) ან OLE Object (OLE Object Field მონაცემთა ტიპი. ველის მონაცემთა ტიპი, რომელიც გამოიყენება სხვა აპლიკაციების ობიექტების შესანახად, რომლებიც დაკავშირებულია ან ჩაშენებულია Microsoft Access-ის მონაცემთა ბაზაში.) შეუძლია მიმართოს ნებისმიერ ველს FROM პუნქტში მითითებულ ნებისმიერ ცხრილში, მაშინაც კი, თუ ეს ველი არ შედის SELECT განცხადებაში. ამისათვის საკმარისია, რომ SELECT განცხადება შეიცავდეს მინიმუმ ერთ SQL სტატისტიკურ ფუნქციას. Microsoft Access მონაცემთა ბაზის ძრავა არ იძლევა MEMO Field-ის ან OLE Object მონაცემების შემცველი ველების დაჯგუფებას.

SELECT ველების სიის ყველა ველი უნდა შეიცავდეს GROUP BY პუნქტს ან იყოს არგუმენტები SQL აგრეგაციის ფუნქციისთვის.

აგრეთვე იხილეთ

SELECT განცხადება

SELECT...INTO განცხადება

პრედიკატები ALL, DISTINCT, DISTINCTROW, TOP

პუნქტი FROM

შეთავაზება

ბრძანება პუნქტის მიხედვით

WHERE პუნქტი

SQL სტატისტიკური ფუნქციები

წყაროს გვერდი: http://office. /ru-ru/access/HA.aspx? pid=CH

შეთავაზება

განსაზღვრავს დაჯგუფებულ ჩანაწერებს, რომლებიც უნდა გამოჩნდეს SELECT განცხადებაში GROUP BY პუნქტით. მას შემდეგ, რაც ჩანაწერები დაჯგუფდება GROUP BY პუნქტით, HAVING პუნქტი აჩვენებს მათ, ვინც აკმაყოფილებს მის პირობებს.

სინტაქსი

აირჩიეთ ველი_სიტი
FROM მაგიდა
სად შერჩევის_პირობები
ჯგუფი ჯგუფი_ველის_სიტი

SELECT განცხადება, რომელიც შეიცავს HAVING პუნქტს, მოიცავს შემდეგ ელემენტებს:

ელემენტი

აღწერა

ველი_სიტი

ველების სახელები, რომლებიც ჩატვირთულია ნებისმიერ მეტსახელთან ერთად (Alias ​​(SQL). ცხრილის ან ველის ალტერნატიული სახელი გამონათქვამში. ფსევდონიმები, როგორც წესი, გამოიყენება როგორც უფრო მოკლე ცხრილი ან ველის სახელები პროგრამებში შემდგომი მითითების გასაადვილებლად, ორაზროვანი მითითებების თავიდან ასაცილებლად და მოთხოვნის შედეგების ჩვენებისას უფრო ინფორმაციული სახელების მისაღებად.) და SQL სტატისტიკური ფუნქციები, პრედიკატები (ALL, DISTINCT, DISTINCTROW ან TOP) ან SELECT განცხადების სხვა პარამეტრებით.

მაგიდა

ცხრილის დასახელება, საიდანაც იტვირთება ჩანაწერები

შერჩევა_მდგომარეობა

შერჩევის პირობა. თუ განცხადება შეიცავს WHERE პუნქტს, Microsoft Access მონაცემთა ბაზის ძრავა დააჯგუფებს მნიშვნელობებს ჩანაწერებზე გამოყენების შემდეგ.

ჯგუფი_ველის_სიტი

ჩანაწერების დასაჯგუფებლად გამოყენებული ველების სახელები (10-მდე). სახელების თანმიმდევრობა ში ჯგუფი_ველის_სიტიგანსაზღვრავს დაჯგუფების დონეს - უმაღლესიდან ყველაზე დაბალამდე

ჯგუფი_მდგომარეობა

გამოთქმა, რომელიც განსაზღვრავს გამოსაჩენ ჩანაწერებს

შენიშვნები

HAVING პუნქტი არჩევითია.

HAVING პუნქტი მსგავსია WHERE პუნქტისა, რომელიც განსაზღვრავს ჩანაწერების შერჩევას. ჩანაწერების GROUP BY პუნქტით დაჯგუფების შემდეგ, HAVING პუნქტი განსაზღვრავს, თუ რომელი ჩანაწერები იქნება ნაჩვენები.

აირჩიეთ ტიპის კოდი,

ჯამი (სტოკში)

პროდუქტებიდან

ჯგუფი TypeCode-ის მიხედვით

HAVING Sum(InStock) > 100 და Like "TEL*";

HAVING პუნქტი შეიძლება შეიცავდეს 40-მდე გამონათქვამს, რომლებიც დაკავშირებულია ლოგიკური ოპერატორებით, როგორიცაა დადა ან.

წყაროს გვერდი: http://office. /ru-ru/access/HA.aspx? pid=CH

ბრძანება პუნქტის მიხედვით

ახარისხებს მოთხოვნის მიერ დაბრუნებულ ჩანაწერებს მითითებულ ველ(ებ)ის ზრდის ან კლების მიხედვით.

სინტაქსი

აირჩიეთ ველი_სიტი
FROM მაგიდა
სად შერჩევა_მდგომარეობა
[, ველი2 ][, ...]]]

SELECT განცხადება, რომელიც შეიცავს ORDER BY პუნქტს მოიცავს შემდეგ ელემენტებს.

ელემენტი

აღწერა

ველი_სიტი

მოძიებული ველების სახელები ნებისმიერ მეტსახელთან ერთად (Alias ​​(SQL). ცხრილის ან ველის ალტერნატიული სახელი გამონათქვამში. ფსევდონიმები, როგორც წესი, გამოიყენება როგორც უფრო მოკლე ცხრილის ან ველების სახელები პროგრამებში შემდგომი მითითების გასაადვილებლად, თავიდან აცილების მიზნით. ორაზროვანი მითითებები და უფრო ინფორმაციული სახელების მისაღებად შეკითხვის შედეგების ჩვენებისას.) და SQL სტატისტიკური ფუნქციები, პრედიკატები (ALL, DISTINCT, DISTINCTROW ან TOP) ან SELECT განცხადების სხვა პარამეტრებით.

მაგიდა

ცხრილის დასახელება, საიდანაც არის აღებული ჩანაწერები

შერჩევის_პირობები

შერჩევის პირობები. თუ განცხადება შეიცავს WHERE პუნქტს, მაშინ ჩანაწერებზე გამოყენების შემდეგ, Microsoft Access მონაცემთა ბაზის ძრავა შეუკვეთებს ჩანაწერების მნიშვნელობებს.

ველი 1, ველი2

ველების სახელები, რომლებითაც დალაგებულია ჩანაწერები.

შენიშვნები

ORDER BY პუნქტი არჩევითია. ის უნდა იქნას გამოყენებული, როდესაც გჭირდებათ მონაცემების ჩვენება დახარისხებული ფორმით.

ნაგულისხმევი დალაგების თანმიმდევრობა არის (სორტირება. მონაცემთა დალაგების გზა მისი მნიშვნელობებისა და ტიპების მიხედვით. მონაცემები შეიძლება დალაგდეს ანბანურად, რიცხვითი მნიშვნელობებით ან თარიღის მიხედვით. დალაგების თანმიმდევრობა შეიძლება იყოს ზრდადი (0-დან 100-მდე, A-დან Z) ან დაღმავალი (100-დან 0-მდე, Z-დან A-მდე).) აღმავალი (A-დან Z-მდე, 0-დან 9-მდე). ქვემოთ მოყვანილი მაგალითები აჩვენებს თანამშრომელთა სახელების დახარისხებას გვარის მიხედვით.

აირჩიეთ გვარი, სახელი

თანამშრომლებისგან

შეკვეთა გვარის მიხედვით;

აირჩიეთ გვარი, სახელი

თანამშრომლებისგან

შეკვეთა გვარით ASC;

ველების კლებადობით დასალაგებლად (Z-დან A-მდე, 9-დან 0-მდე), დაამატეთ რეზერვირებული სიტყვა DESC თითოეული ველის სახელს. შემდეგი მაგალითი გვიჩვენებს დახარისხებას კლებადობით დასაქმებულთა ხელფასების მიხედვით.

აირჩიეთ გვარი, ხელფასი

თანამშრომლებისგან

შეკვეთა ხელფასის მიხედვით DESC, გვარი;

თუ მიუთითებთ ველებს ORDER BY პუნქტში, რომლებიც შეიცავს MEMO Field ტიპის მონაცემებს (Memo Field მონაცემთა ტიპი. ველის მონაცემთა ტიპი Microsoft Access მონაცემთა ბაზაში. MEMO ველი შეიძლება შეიცავდეს 65535 სიმბოლომდე.) ან OLE Object Field (OLE Object). ველის მონაცემთა ტიპი " ველის მონაცემთა ტიპი გამოიყენება ობიექტების შესანახად სხვა აპლიკაციებიდან, რომლებიც დაკავშირებულია ან ჩართულია Microsoft Access მონაცემთა ბაზაში.), ეს გამოიწვევს შეცდომას. Microsoft Access მონაცემთა ბაზის ძრავას არ შეუძლია ამ ველების ტიპების დალაგება.

ORDER BY პუნქტი, როგორც წესი, არის ბოლო პუნქტი SQL განცხადებაში (SQL განცხადება (სტრიქონი). გამონათქვამი, რომელიც განსაზღვრავს SQL ბრძანებას, როგორიცაა SELECT, UPDATE ან DELETE და მოიცავს პუნქტებს, როგორიცაა WHERE ან ORDER BY. SQL განცხადებები. /სტრიქონები ჩვეულებრივ გამოიყენება შეკითხვებში და სტატისტიკურ ფუნქციებში.).

თქვენ შეგიძლიათ შეიტანოთ დამატებითი ველები ORDER BY პუნქტში. ჩანაწერები ჯერ დალაგებულია ORDER BY პუნქტში მითითებული ველის მიხედვით. პირველ ველში იგივე მნიშვნელობების მქონე ჩანაწერები დალაგებულია მეორეში მითითებული ველის მიხედვით და ა.შ.
აგრეთვე იხილეთ

SELECT განცხადება

SELECT...INTO განცხადება

პრედიკატები ALL, DISTINCT, DISTINCTROW, TOP

პუნქტი FROM

GROUP BY პუნქტი

შეთავაზება

WHERE პუნქტი

SQL სტატისტიკური ფუნქციები

წყაროს გვერდი: http://office. /ru-ru/access/HA.aspx? pid=CH

შიდა შეერთების ოპერაცია

აერთიანებს ჩანაწერებს ორი ცხრილიდან, თუ ამ ცხრილების დამაკავშირებელი ველები შეიცავს იგივე მნიშვნელობებს.

სინტაქსი

FROM ცხრილი 1შიდა შეერთება ცხრილი 2ჩართულია ცხრილი 1.ველი 1 შედარებით_ოპერატორის ცხრილი2.ველი2

INNER JOIN ოპერაცია შედგება შემდეგი ელემენტებისაგან:

ელემენტი

აღწერა

ცხრილი 1, ცხრილი 2

შესაერთებელი ჩანაწერების შემცველი ცხრილების სახელები

ველი 1, ველი2

დასაკავშირებელი ველების სახელები. არაციფრული ველები უნდა იყოს მონაცემთა ერთი და იგივე ტიპის (მონაცემთა ტიპი. ველის მახასიათებელი, რომელიც განსაზღვრავს მონაცემთა ტიპს, რომელიც შეიძლება შეიცავდეს ველს. მონაცემთა ტიპები მოიცავს: ლოგიკური, მთელი რიცხვი, გრძელი, ვალუტა, ერთჯერადი, ორმაგი, თარიღი, სტრიქონი, და Variant (ნაგულისხმევი).) და შეიცავს იმავე ტიპის მონაცემებს. თუმცა, ამ ველების სახელები შეიძლება განსხვავებული იყოს

შედარება_ოპერატორი

ნებისმიერი შედარების ოპერატორი: (=,<, >, <=, >= ან<>)

SQL მოთხოვნების ნიმუში შეიძლება გამოყენებულ იქნას MS Access-ში SQL მოთხოვნების დაწერის შესასწავლად და პრაქტიკაში.

ერთი SQL შეკითხვა შეიძლება განთავსდეს მეორეში. ქვემოთხოვნა სხვა არაფერია, თუ არა მოთხოვნა შეკითხვის შიგნით. როგორც წესი, ქვემოთხოვნა გამოიყენება WHERE პუნქტში. მაგრამ არსებობს ქვემოთხოვნების გამოყენების სხვა გზები.

შეკითხვა Q011.ნაჩვენებია ინფორმაცია პროდუქტების შესახებ m_product ცხრილიდან, რომლის კოდები ასევე მოცემულია m_income ცხრილში:

აირჩიეთ *
FROM m_product
WHERE id IN (SELECT product_id FROM m_income);

მოთხოვნა Q012.ნაჩვენებია m_product ცხრილის პროდუქტების სია, რომელთა კოდები არ არის m_outcome ცხრილში:

აირჩიეთ *
FROM m_product
WHERE id NOT IN (SELECT product_id FROM m_outcome);

მოთხოვნა Q013.ეს SQL მოთხოვნა აჩვენებს პროდუქტის კოდებისა და სახელების უნიკალურ სიას, რომლებიც მოცემულია m_income ცხრილში, მაგრამ არა m_outcome ცხრილში:

აირჩიეთ DISTINCT product_id, სათაური
FROM m_income INNER JOIN m_product
ON m_income.product_id=m_product.id
WHERE product_id NOT IN (SELECT product_id FROM m_outcome);

შეკითხვა Q014.კატეგორიების უნიკალური სია, რომელთა სახელები იწყება ასო M-ით, ნაჩვენებია m_category ცხრილიდან:

აირჩიეთ განსხვავებული სათაური
FROM m_product
WHERE სათაური LIKE "M*";

შეკითხვა Q015.მოთხოვნის ველებზე არითმეტიკული მოქმედებების შესრულების მაგალითი და შეკითხვაში ველების სახელის გადარქმევა (სხვა სახელი). ეს მაგალითი ითვლის ხარჯს = რაოდენობას * ფასს და მოგებას თითოეული საქონლის ხარჯის ჩანაწერისთვის, თუ ვივარაუდებთ, რომ მოგება არის გაყიდვების 7 პროცენტი:


თანხა*ფასი/100*7 AS მოგება
FROM m_შედეგი;

შეკითხვა Q016.არითმეტიკული ოპერაციების ანალიზით და გამარტივებით, შეგიძლიათ გაზარდოთ შეკითხვის შესრულების სიჩქარე:

SELECT dt, product_id, თანხა, ფასი, თანხა*ფასი AS outcome_sum,
შედეგი_ჯამ *0.07 AS მოგება
FROM m_შედეგი;

შეკითხვა Q017.შეგიძლიათ გამოიყენოთ INNER JOIN განცხადება მრავალი ცხრილის მონაცემების შესაერთებლად. შემდეგ მაგალითში, ctgry_id მნიშვნელობიდან გამომდინარე, m_income ცხრილის თითოეული ჩანაწერი ემთხვევა იმ კატეგორიის სახელს m_category ცხრილიდან, რომელსაც პროდუქტი ეკუთვნის:

აირჩიეთ c.title, b.title, dt, თანხა, ფასი, თანხა*ფასი AS შემოსავალი_ჯამად
FROM (მ_შემოსავალი AS INNER JOIN m_product AS b ON a.product_id=b.id)
INNER JOIN m_category AS c ON b.ctgry_id=c.id
ORDER BY c.title, b.title;

მოთხოვნა Q018.ფუნქციებს, როგორიცაა SUM - ჯამი, COUNT - რაოდენობა, AVG - საშუალო არითმეტიკული მნიშვნელობა, MAX - მაქსიმალური მნიშვნელობა, MIN - მინიმალური მნიშვნელობა ეწოდება აგრეგატის ფუნქციებს. ისინი იღებენ ბევრ მნიშვნელობას და მათი დამუშავების შემდეგ აბრუნებენ ერთ მნიშვნელობას. თანხისა და ფასის ველების ნამრავლის ჯამის გამოთვლის მაგალითი აგრეგატული ფუნქციის SUM-ის გამოყენებით.