pyetje sql në akses ms. Prezantimi

SQL - Mësimi 4. Marrja e të dhënave - deklaratë SELECT

Pra, në bazën e të dhënave të forumit tonë ka tre tabela: përdoruesit (përdoruesit), temat (temat) dhe postimet (mesazhet). Dhe ne duam të shohim se çfarë të dhënash përmbajnë. Ekziston një operator për këtë në SQL ZGJIDH. Sintaksa për përdorimin e tij është si më poshtë:

SELECT what_select FROM where_select;


Në vend të "çfarë_zgjedhja" duhet të specifikojmë ose emrin e kolonës vlerat e së cilës duam të shohim, ose emrat e disa kolonave të ndara me presje, ose simbolin yll (*), që do të thotë zgjedhjen e të gjitha kolonave të tabelës. . Në vend të "from_select" ju duhet të specifikoni emrin e tabelës.

Le të shohim së pari të gjitha kolonat nga tabela e përdoruesve:

SELECT * NGA përdoruesit;

Këto janë të gjitha të dhënat tona që kemi futur në këtë tabelë. Por le të supozojmë se duam të shikojmë vetëm në kolonën id_user (për shembull, në mësimin e fundit, për të mbushur tabelën e temave, duhej të dinim se cilët id_users janë në tabelën e përdoruesve). Për ta bërë këtë, ne do të specifikojmë emrin e kësaj kolone në kërkesë:

SELECT id_user NGA përdoruesit;

Epo, nëse duam të shohim, për shembull, emrat dhe postat elektronike të përdoruesve tanë, atëherë do të listojmë kolonat e interesit të ndara me presje:

SELECT emrin, email nga përdoruesit;

Në mënyrë të ngjashme, ju mund të shihni se çfarë të dhënash përmbajnë tabelat tona të tjera. Le të shohim se çfarë temash kemi:

SELECT * NGA temat;

Tani kemi vetëm 4 tema, por po sikur të jenë 100 të tilla? Unë do të doja që ato të shfaqen, për shembull, sipas rendit alfabetik. Ekziston një fjalë kyçe për këtë në SQL URDHËR NGA e ndjekur nga emri i kolonës me të cilën do të bëhet renditja. Sintaksa është si më poshtë:

ZGJIDH emrin e_kolonës NGA emri_tabele RENDI SIPAS emrit të_kollonës;



Si parazgjedhje, renditja është në rend rritës, por kjo mund të ndryshohet duke shtuar një fjalë kyçe DESC

Tani të dhënat tona janë renditur në rend zbritës.

Renditja mund të bëhet nga disa kolona në të njëjtën kohë. Për shembull, pyetja e mëposhtme do t'i rendit të dhënat sipas kolonës "emri_emë" dhe nëse ka shumë rreshta identikë në këtë kolonë, atëherë kolona id_author do të renditet në rend zbritës:

Krahasoni rezultatin me rezultatin e pyetjes së mëparshme.

Shumë shpesh nuk kemi nevojë për të gjithë informacionin nga tabela. Për shembull, ne duam të zbulojmë se cilat tema janë krijuar nga përdoruesi sveta (id=4). Ekziston një fjalë kyçe për këtë në SQL KU, sintaksa për një kërkesë të tillë është si më poshtë:

Për shembullin tonë, kushti është ID-ja e përdoruesit, d.m.th. Na duhen vetëm ato rreshta, kolona id_author e të cilave përmban 4 (identifikimi i përdoruesit sveta):

Ose duam të dimë se kush e krijoi temën "biçikletat":

Sigurisht, do të ishte më i përshtatshëm nëse në vend të identitetit të autorit, do të shfaqej emri i tij, por emrat ruhen në një tabelë tjetër. Në mësimet vijuese, do të mësojmë se si të zgjedhim të dhëna nga tabela të shumta. Ndërkohë, le të zbulojmë se cilat kushte mund të vendosen duke përdorur fjalën kyçe WHERE.

Operatori Përshkrim
= (e barabartë) Përzgjidhen vlera të barabarta me vlerën e specifikuar

Shembull:

SELECT * NGA temat WHERE id_autor=4;

Rezultati:

> (më shumë) Përzgjidhen vlera më të mëdha se sa specifikohen

Shembull:

SELECT * NGA temat WHERE id_autor>2;

Rezultati:

< (меньше) Përzgjidhen vlerat më të vogla se sa përcaktohen

Shembull:

SELECT * NGA temat WHERE id_autor
Rezultati:

>= (më e madhe ose e barabartë me) Përzgjidhen vlera më të mëdha se dhe të barabarta me vlerën e specifikuar

Shembull:

SELECT * NGA temat WHERE id_autor>=2;

Rezultati:

<= (меньше или равно) Përzgjidhen vlerat më të vogla dhe të barabarta me vlerën e specifikuar

Shembull:

SELECT * NGA temat WHERE id_autor
Rezultati:

!= (jo e barabartë) Përzgjidhen vlera që nuk janë të barabarta me vlerën e specifikuar

Shembull:

SELECT * NGA temat WHERE id_autor!=1;

Rezultati:

NUK ËSHTË NULL Zgjedh rreshtat që kanë vlera në fushën e specifikuar

Shembull:

ZGJIDH * NGA temat KU id_autori NUK ËSHTË NULL;

Rezultati:

ËSHTË NULL Zgjedh rreshtat që nuk kanë vlerë në fushën e specifikuar

Shembull:

ZGJIDH * NGA temat WHERE id_autor ËSHTË NULL;

Rezultati:

Komplet bosh - nuk ka linja të tilla.

MES (ndërmjet) Përzgjidhen vlerat midis vlerave të specifikuara

Shembull:

ZGJIDH * NGA temat WHERE id_autori MES 1 DHE 3;

Rezultati:

IN (vlera e përmbajtur) Përzgjidhen vlerat që korrespondojnë me vlerat e specifikuara

Shembull:

SELECT * NGA temat WHERE id_autor IN (1, 4);

Rezultati:

JO IN (vlera nuk përmbahet) Përzgjidhen vlera të tjera nga ato të specifikuara

Shembull:

SELECT * NGA temat WHERE id_autor NOT IN (1, 4);

Rezultati:

Pëlqeje (ndeshje) Përzgjidhen vlerat që përputhen me modelin

Shembull:

SELECT * NGA temat WHERE emri i temës LIKE "led%";

Rezultati:

Metakarakteret e mundshëm për operatorin LIKE do të diskutohen më poshtë.

NUK Pëlqej (nuk përputhet) Përzgjidhen vlerat që nuk përputhen me modelin

Shembull:

ZGJIDH * NGA temat KU emri i temës NUK Pëlqen "led%";

Rezultati:

LIKE metakarakteret e operatorit

Kërkimet duke përdorur metakaraktere mund të kryhen vetëm në fushat e tekstit.

Metakarakteri më i zakonshëm është % . Do të thotë çdo simbol. Për shembull, nëse duam të gjejmë fjalë që fillojnë me shkronjat "vel", atëherë do të shkruajmë LIKE "vel%", dhe nëse duam të gjejmë fjalë që përmbajnë karakteret "club", atëherë do të shkruajmë LIKE "% klub%". Për shembull:

Një tjetër metakarakter i përdorur zakonisht është _ . Ndryshe nga % që tregon pak ose aspak karaktere, nënvizimi tregon saktësisht një karakter. Për shembull:

Kushtojini vëmendje hapësirës midis metakarakterit dhe "peshkut" nëse e kaloni atë, kërkesa nuk do të funksionojë, sepse metakarakter _ qëndron për saktësisht një karakter, dhe një hapësirë ​​është gjithashtu një karakter.

Mjafton për sot. Në mësimin tjetër do të mësojmë se si të shkruajmë pyetje kundrejt dy ose më shumë tabelave. Ndërkohë, provoni të bëni pyetjet tuaja kundër tabelës së postimeve.

Ky mësim i kushtohet Pyetjet SQL në bazën e të dhënave në Qasja VBA. Ne do të shikojmë se si bëhen pyetjet INSERT, UPDATE, DELETE në bazën e të dhënave në VBA, dhe gjithashtu do të mësojmë se si të marrim një vlerë specifike nga një pyetje SELECT.

Ata që programojnë Qasja VBA dhe gjatë punës me një bazë të dhënash të serverit SQL, shumë shpesh ata përballen me një detyrë kaq të thjeshtë dhe të nevojshme si dërgimi i një pyetjeje SQL në bazën e të dhënave, qoftë INSERT, UPDATE ose një pyetje e thjeshtë SQL SELECT. Dhe duke qenë se ne jemi programues fillestarë, ne gjithashtu duhet të jemi në gjendje ta bëjmë këtë, kështu që sot do të bëjmë pikërisht atë.

Ne kemi prekur tashmë temën e marrjes së të dhënave nga një server SQL, ku kemi shkruar kodin në VBA për të marrë këto të dhëna, për shembull, në artikullin rreth Ngarkimit të të dhënave në një skedar teksti nga MSSql 2008, ose kemi prekur gjithashtu një Pak në material Ngarkimi i të dhënave nga Access në një shabllon të Word dhe Excel, por në një mënyrë ose në një tjetër, ne e shikuam këtë sipërfaqësisht, dhe sot unë propozoj të flasim për këtë në pak më shumë detaje.

Shënim! Të gjithë shembujt e mëposhtëm konsiderohen duke përdorur projektin Access 2003 ADP dhe bazën e të dhënave MSSql 2008 Nëse nuk e dini se çfarë është një projekt ADP, atëherë ne e shikuam këtë në materialin Si të krijoni dhe konfiguroni një projekt Access ADP.

Të dhënat burimore për shembuj

Le të themi se kemi një tabelë test_table, e cila do të përmbajë numrat dhe emrat e muajve të vitit (pyetjet janë ekzekutuar duke përdorur Studio Menaxhimi)

KRIJO TABELA .( JO NULL, (50) NULL) NË SHKONI

Siç thashë tashmë, ne do të përdorim një projekt ADP të konfiguruar për të punuar me MS SQL 2008, në të cilin krijova një formular testimi dhe shtova një buton fillimi me një nënshkrim "Vrapo", që do të na duhet për të testuar kodin tonë, d.m.th. Ne do të shkruajmë të gjithë kodin në mbajtësin e ngjarjeve " Shtypja e butonit».

Pyetjet e bazës së të dhënave INSERT, PËRDITËSO, FSHI në VBA

Për të mos vonuar shumë, le të fillojmë menjëherë, le të themi se duhet të shtojmë një rresht në tabelën tonë të testimit ( kodi i komentuar)/

Private Sub start_Click() "Deklaroni një variabël për të ruajtur vargun e pyetjes Dim sql_query Si String "Shkruani pyetjen që na nevojitet në të sql_query = "INSERT INTO test_tabela (id, name_mon) VALUES ("6", "Qershor")" "Ekzekutoni it DoCmd RunSQL sql_query Fund Sub

Në këtë rast, pyetja ekzekutohet duke përdorur parametrat aktual të lidhjes së bazës së të dhënave. Mund të kontrollojmë nëse të dhënat janë shtuar apo jo.

Siç mund ta shihni, të dhënat janë futur.

Për të fshirë një rresht, ne shkruajmë kodin e mëposhtëm.

Private Sub start_Click() "Deklaroni një variabël për të ruajtur vargun e pyetjes Dim sql_query Si String "Shkruani një pyetje për fshirjen në të sql_query = "FSHIjeni test_tabela WHERE id = 6" "Ekzekuto DoCmd.RunSQL sql_query Fund Sub

Nëse kontrollojmë, do të shohim që rreshti i dëshiruar është fshirë.

Për të përditësuar të dhënat, shkruani kërkesën për përditësim në variablin sql_query, shpresoj që kuptimi të jetë i qartë.

ZGJIDHni pyetjen në një bazë të dhënash në VBA

Këtu gjërat janë pak më interesante sesa me konstruktet e tjera SQL.

Së pari, le të themi se duhet të marrim të gjitha të dhënat nga tabela, dhe, për shembull, do t'i përpunojmë dhe do t'i shfaqim në një mesazh, dhe ju, natyrisht, mund t'i përdorni për qëllime të tjera, për këtë ne shkruajmë sa vijon kodi

Private Sub start_Click() "Deklaroni variablat "Për një grup të dhënash nga baza e të dhënave Dim RS As ADODB.Recordset "String i pyetjes Dim sql_query As String "String për shfaqjen e të dhënave përmbledhëse në një mesazh Dim str As String "Krijoni një objekt të ri për regjistrime set RS = New ADODB .Recordset "Query line sql_query = "SELECT id, name_mon FROM test_table" "Ekzekutoni pyetjen duke përdorur cilësimet aktuale të lidhjes së projektit RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Loop through the records" RS.EOF) "Plotësoni variablin për të shfaqur mesazhin str = str & RS.Fields("id") & "-" & RS.Fields("name_mon") & vbnewline "shkoni te rekordi tjetër RS.MoveNext Wend " Nxjerr mesazhin msgbox str Fund Sub

Këtu ne tashmë po përdorim sythe VBA Access për të përsëritur të gjitha vlerat në grupin tonë të të dhënave.

Por mjaft shpesh është e nevojshme të merren jo të gjitha vlerat nga një grup regjistrimesh, por vetëm një, për shembull, emri i muajit sipas kodit të tij. Dhe për ta bërë këtë, është disi e shtrenjtë të përdorësh një lak, kështu që thjesht mund të shkruajmë një pyetje që do të kthejë vetëm një vlerë dhe do t'i qasemi, për shembull, do të marrim emrin e muajit duke përdorur kodin 5

Private Sub start_Click() "Deklaroni variablat" Për një grup rekordesh nga baza e të dhënave Dim RS As ADODB.Recordset "Query string Dim sql_query As String "String për të shfaqur vlerën përfundimtare Dim str As String "Krijoni një objekt të ri për të dhënat e vendosur RS = New ADODB.Recordset "Query line sql_query = "SELECT name_mon FROM test_table WHERE id = 5" "Ekzekutoni pyetjen duke përdorur cilësimet aktuale të lidhjes së projektit RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic strGet. Fields(0) msgbox str Fundi Nën

Për universalitetin, këtu ne jemi adresuar tashmë jo me emrin e qelizës, por me indeksin e saj, d.m.th. 0, dhe kjo është vlera e parë në Set regjistrimi, në fund e morëm vlerën "Mund".

Siç mund ta shihni, gjithçka është mjaft e thjeshtë. Nëse shpesh ju duhet të merrni një vlerë specifike nga baza e të dhënave ( si në shembullin e fundit), atëherë unë rekomandoj nxjerrjen e të gjithë kodit në një funksion të veçantë (Si të shkruani një funksion në VBA Access 2003) me një parametër hyrës, për shembull, kodin e muajit ( nëse marrim parasysh shembullin tonë) dhe thjesht, aty ku është e nevojshme të shfaqet kjo vlerë, thirrni funksionin që na nevojitet me parametrin e kërkuar dhe kaq, duke e bërë këtë ne do të reduktojmë ndjeshëm kodin VBA dhe do të përmirësojmë perceptimin e programit tonë.

Kaq për sot. Paç fat!

Përshkrimi i projektit arsimor "Dyqan"

Diagrami i lidhjes së tabelës

Përshkrimi i tabelave

m_category - kategoritë e produkteve

m_të ardhura - faturë malli

m_rezultati - konsumi i mallrave

m_produkt - drejtoria, përshkrimet e produkteve

m_furnizuesi - drejtoria; informacion furnizues

m_unit - drejtoria; njësi

Për të testuar praktikisht shembujt e dhënë në këtë material trajnimi, duhet të keni softuerin e mëposhtëm:

Microsoft Access 2003 ose më vonë.

SQL Query në MS Access. Filloni

Për të parë përmbajtjen e tabelës, klikoni dy herë mbi emrin e tabelës në panelin e majtë:

Për të kaluar në modalitetin e redaktimit të fushës së tabelës, zgjidhni modalitetin e projektimit në panelin e sipërm:

Për të shfaqur rezultatin e një pyetjeje SQL, klikoni dy herë emrin e pyetjes në panelin e majtë:

Për të kaluar në modalitetin e redaktimit të pyetjeve SQL, zgjidhni modalitetin SQL në panelin e sipërm:

SQL Query. Shembuj në MS Access. ZGJIDH: 1-10

Në një pyetje SQL, deklarata SELECT përdoret për të zgjedhur nga tabelat e bazës së të dhënave.

SQL Query Q001. Shembull i pyetjes SQL për të marrë vetëm fushat e kërkuara në sekuencën e dëshiruar:

SELECT dt, product_id, shuma


NGA m_të ardhura;

SQL Query Q002. Në këtë pyetje shembull SQL, karakteri yll (*) përdoret për të renditur të gjitha kolonat e tabelës m_produkt, me fjalë të tjera, për të marrë të gjitha fushat e relacionit m_produkt:

ZGJIDH *
NGA m_produkt;

KërkesëSQL Q003. Deklarata DISTINCT përdoret për të eliminuar hyrjet e dyfishta dhe për të marrë hyrje të shumta unike:

ZGJIDH ID-në e produktit TË DAKTUAR


NGA m_të ardhura;

SQL Query Q004. Deklarata ORDER BY përdoret për të renditur (renditur) regjistrimet sipas vlerave të një fushe specifike. Emri i fushës është specifikuar pas deklaratës ORDER BY:

ZGJIDH *
NGA m_të ardhura


Porosit sipas çmimit;

SQL Query Q005. Deklarata ASC përdoret si plotësuese e deklaratës ORDER BY dhe shërben për të specifikuar renditjen në rritje. Deklarata DESC përdoret përveç deklaratës ORDER BY dhe përdoret për të specifikuar renditjen zbritëse. Në rastin kur as ASC dhe as DESC nuk janë specifikuar, prezenca e ASC (parazgjedhur) supozohet:

ZGJIDH *
NGA m_të ardhura


POROSIT ME dt DESC , çmimi;

SQL Query Q006. Për të zgjedhur rekordet e nevojshme nga tabela, përdoren shprehje të ndryshme logjike që shprehin kushtin e përzgjedhjes. Shprehja Boolean shfaqet pas deklaratës WHERE. Një shembull i marrjes së të gjitha regjistrimeve nga tabela m_të ardhura për të cilat vlera e shumës është më e madhe se 200:

ZGJIDH *
NGA m_të ardhura


KU shuma>200;

SQL Query Q007. Për të shprehur kushtet komplekse, përdoren operatorët logjikë AND (lidhëz), OR (disjunksion) dhe NOT (mohim logjik). Një shembull i marrjes nga tabela m_outcome të gjitha rekordet për të cilat vlera e shumës është 20 dhe vlera e çmimit është më e madhe ose e barabartë me 10:

Çmimi


NGA m_rezultat
KU shuma=20 DHE çmimi>=10;

SQL Query Q008. Për të bashkuar të dhëna nga dy ose më shumë tabela, përdorni udhëzimet NJOFTIM I BRENDSHËM, BASHKIMI I LEFT, BASHKIMI Djathtas. Shembulli i mëposhtëm merr fushat dt, product_id, shumën, çmimin nga tabela m_të ardhura dhe fushën e titullit nga tabela m_product. Regjistri i tabelës m_të ardhura bashkohet me rekordin e tabelës m_produkt kur vlera e m_income.product_id është e barabartë me vlerën e m_product.id:



ON m_të ardhura.produkt_id=m_produkt.id;

SQL Query Q009. Ka dy gjëra për t'u kushtuar vëmendje në këtë pyetje SQL: 1) teksti i kërkimit është i mbyllur në thonjëza të vetme ("); 2) data është në formatin #Month/Day/Year#, që është e vërtetë për MS Access. Në sisteme të tjera, formati për të shkruar datën mund të jetë i ndryshëm.

SELECT dt, product_id, titulli, shuma, çmimi


NGA m_të ardhura BASHKOHUNI INNER m_produkt

WHERE title="(! GJUHË: Qumësht" And dt=#6/12/2011#; !}

SQL Query Q010. Instruksioni BETWEEN përdoret për të testuar nëse një vlerë i përket një diapazoni të caktuar. Një shembull i pyetjes SQL që shfaq informacion rreth produkteve të marra midis 1 qershorit dhe 30 qershorit 2011:

ZGJIDH *
NGA m_të ardhura BASHKOHU INNER m_produkt


ON m_income.product_id=m_product.id
KU dt MES #6/1/2011# dhe #6/30/2011#;

SQL Query. Shembuj në MS Access. ZGJIDH: 11-20

Një pyetje SQL mund të vendoset brenda një tjetri. Një nën-pyetje nuk është gjë tjetër veçse një pyetje brenda një pyetjeje. Në mënyrë tipike, një nënpyetje përdoret në klauzolën WHERE. Por ka mënyra të tjera për të përdorur nënpyetje.

Pyetje Q011. Shfaqen informacione rreth produkteve nga tabela m_product, kodet e të cilave janë gjithashtu në tabelën m_të ardhura:

ZGJIDH *
NGA m_produkt


WHERE id IN (ZGJIDHni ID_produkti NGA m_të ardhurat);

Kërkesa Q012. Shfaqet një listë e produkteve nga tabela m_product, kodet e të cilave nuk janë në tabelën m_outcome:

ZGJIDH *
NGA m_produkt


WHERE id NOT IN (ZGJIDHni ID_produkti NGA m_outcome);

Kërkesa Q013. Ky pyetje SQL shfaq një listë unike të kodeve dhe emrave të produkteve që janë në tabelën m_income por jo në tabelën m_outcome:

ZGJIDH ID-në e produktit TË NDRYSHËM, titull


NGA m_të ardhura BASHKOHUNI INNER m_produkt
ON m_income.product_id=m_product.id
WHERE product_id NOT IN (ZGJIDH ID_produkti NGA m_rezultati);

Pyetje Q014. Një listë unike e kategorive emrat e të cilave fillojnë me shkronjën M shfaqet nga tabela m_category:

ZGJIDHni titullin TË NDRYSHËM


NGA m_produkt
KU titulli LIKE "M*";

Pyetje Q015. Një shembull i kryerjes së veprimeve aritmetike në fushat në një pyetje dhe riemërtimit të fushave në një pyetje (alias). Ky shembull llogarit shpenzimin = sasinë *çmimin dhe fitimin për çdo hyrje të shpenzimeve të artikullit, duke supozuar se fitimi është 7 përqind e shitjeve:


shuma*çmimi/100*7 AS fitim
NGA m_rezultati;

Pyetje Q016. Duke analizuar dhe thjeshtuar veprimet aritmetike, ju mund të rrisni shpejtësinë e ekzekutimit të pyetjes:

SELECT dt, ID_produkti, shuma, çmimi, shuma*çmimi AS rezultati_shuma,


rezultati_shuma*0.07 AS fitimi
NGA m_rezultati;

Pyetje Q017. Ju mund të përdorni deklaratën JOIN INNER për të bashkuar të dhëna nga tabela të shumta. Në shembullin e mëposhtëm, në varësi të vlerës së ctgry_id, çdo hyrje në tabelën m_income përputhet me emrin e kategorisë nga tabela m_category së cilës i përket produkti:

ZGJIDH c.titull, b.titull, dt, shuma, çmimi, shuma*çmimi AS të ardhurat_shuma


NGA (m_të ardhura SI BASHKIM I BRENDSHËM m_produkt AS b ON a.produkt_id=b.id)
BASHKIMI I BRENDSHËM m_kategoria SI c ON b.ctgry_id=c.id
RENDIT ME c.titull, b.titull;

Kërkesa Q018. Funksionet si SUM - shuma, COUNT - sasia, AVG - mesatare aritmetike, MAX - vlera maksimale, MIN - vlera minimale quhen funksione agregate. Ata pranojnë shumë vlera dhe pas përpunimit të tyre kthejnë një vlerë të vetme. Një shembull i llogaritjes së shumës së produktit të fushave të shumës dhe çmimit duke përdorur funksionin agregat SUM:

SELECT SUM (shuma*çmimi) AS Total_Shuma


NGA m_të ardhura;

Pyetje Q019. Një shembull i përdorimit të disa funksioneve agregate:

SELECT Shuma(shuma) AS Shuma_Sum, AVG(shuma) AS Shuma_AVG,


MAX(shuma) AS Shuma_Maksim, Min(shuma) AS Shuma_Minim,
Numërimi (*) AS Numri_Total
NGA m_të ardhura;

Kërkesë Q020. Në këtë shembull, llogaritet shuma e të gjitha mallrave me kodin 1, e kapitalizuar në qershor 2011:

ZGJIDH shumën(shuma*çmimi) AS të ardhurat_shuma


NGA m_të ardhura
WHERE product_id=1 DHE dt MES #6/1/2011# DHE #6/30/2011#;.

Pyetje Q021. Kërkesa e mëposhtme SQL llogarit sasinë e shitjeve të artikujve me kodin 4 ose 6:

ZGJIDH shumën (shuma*çmimi) si shumë e_rezultatit


NGA m_rezultat
KU product_id=4 OSE product_id=6;

Pyetje Q022.Është llogaritur se sa mallra me kodin 4 ose 6 janë shitur më 12 qershor 2011:

ZGJIDH shumën(shuma*çmimi) SI rezultati_shuma


NGA m_rezultat
KU (produkt_id=4 OSE product_id=6) DHE dt=#6/12/2011#;

Pyetje Q023. Detyra është kjo. Llogaritni sasinë totale të mallrave në kategorinë "Produkte furre" që janë kapitalizuar.

Për të zgjidhur këtë problem, duhet të operoni me tre tabela: m_të ardhura, m_produkt dhe m_kategori, sepse:


- sasia dhe çmimi i mallrave të kapitalizuar ruhen në tabelën m_të ardhura;
- kodi i kategorisë së çdo produkti ruhet në tabelën m_produkt;
- emri i kategorisë së titullit ruhet në tabelën m_category.

Për të zgjidhur këtë problem ne do të përdorim algoritmin e mëposhtëm:


- përcaktimi i kodit të kategorisë "Produkte buke" nga tabela e kategorisë m duke përdorur një nënpyetje;
- lidhja e tabelave m_të ardhura dhe m_produkt për të përcaktuar kategorinë e secilit produkt të blerë;
- llogaritja e shumës së arkëtimit (= sasia*çmimi) për mallrat, kodi i kategorisë së të cilëve është i barabartë me kodin e përcaktuar nga nënkërkesa e mësipërme.
ZGJIDH
NGA m_produkt SI BASHKIM I BRENDSHËM m_të ardhura SI b ON a.id=b.id_produkti
WHERE ctgry_id = (SELECT id FROM m_category WHERE title="Produkte buke"); !}

Pyetje Q024. Ne zgjidhim problemin e llogaritjes së sasisë totale të mallrave të kapitalizuar në kategorinë "Produkte furre" duke përdorur algoritmin e mëposhtëm:
- për çdo hyrje në tabelën m_të ardhura, në varësi të vlerës së produktit_id të tij, nga tabela e kategorisë m, përputhet me emrin e kategorisë;
- zgjidhni regjistrimet për të cilat kategoria është “Produkte furre”;
- llogarit shumën e arkëtimit = sasia * çmimi.

FROM (m_produkt SI BASHKIM I BRENDSHËM m_të ardhura SI b ON a.id=b.id_produkti)

WHERE c.title="Produkte buke"; !}

Pyetje Q025. Ky shembull llogarit sa artikuj mallrash janë konsumuar:

SELECT COUNT(produkt_id) AS product_cnt


FROM (ZGJIDHNI ID-në e produktit TË NDRYSHËM NGA m_rezultati) AS t;

Pyetje Q026. Deklarata GROUP BY përdoret për të grupuar regjistrimet. Në mënyrë tipike, të dhënat grupohen sipas vlerës së një ose më shumë fushave, dhe një operacion agregat zbatohet për secilin grup. Për shembull, pyetja e mëposhtme gjeneron një raport mbi shitjen e mallrave. Kjo do të thotë, krijohet një tabelë që përmban emrat e mallrave dhe sasinë për të cilën janë shitur:

ZGJIDH titullin, SUM(shuma*çmimi) SI rezultati_shuma


NGA m_produkt SI BASHKIM I BRENDSHËM m_rezultat SI b
ON a.id=b.produkt_id
GRUPI SIPAS titullit;

Pyetje Q027. Raporti i shitjeve sipas kategorive. Kjo do të thotë, gjenerohet një tabelë që përmban emrat e kategorive të produkteve, shumën totale për të cilën janë shitur produktet e këtyre kategorive dhe shumën mesatare të shitjeve. Funksioni ROUND përdoret për të rrumbullakosur vlerën mesatare në të qindtën më të afërt (shifra e dytë pas ndarësit dhjetor):

ZGJIDH c.titull, SUM(shuma*çmimi) SI shuma_e_rezultatit,


ROUND(AVG(shuma*çmimi),2) AS rezultati_shuma_mesatare
FROM (m_produkt SI BASHKIM I BRENDSHËM m_rezultat AS b ON a.id=b.id_produkti)
BASHKIMI I BRENDSHËM m_kategoria SI c ON a.ctgry_id=c.id
GRUP SIPAS c.titull;

Pyetje Q028. Numri total dhe mesatar i arkëtimeve të tij llogaritet për çdo produkt dhe tregon informacione për produktet, arkëtimet totale të të cilave janë të paktën 500:

SELECT ID_produkti, SUM(shuma) AS shuma_shuma,


Rrumbullakët(mesatare(shuma),2) AS shuma_mesatare
NGA m_të ardhura
GRUPI SIPAS product_id
DUHET Shuma(shuma)>=500;

Pyetje Q029. Ky pyetësor llogarit për çdo produkt shumën dhe mesataren e arkëtimeve të tij të bëra në tremujorin e dytë të vitit 2011. Nëse shuma totale e marrjes së produktit është të paktën 1000, atëherë shfaqet informacioni për këtë produkt:

ZGJIDH titullin, SUM (shuma*çmimi) AS të ardhurat_shuma


NGA m_të ardhura një BASHKIM I BRENDSHËM m_produkt b ON a.produkt_id=b.id
KU dt MES #4/1/2011# DHE #6/30/2011#
GRUPI SIPAS titullit
DUKE SHUMË (shuma*çmimi)>=1000;

Pyetje Q030. Në disa raste, ju duhet të përputhni çdo rekord të një tabele me çdo rekord të një tabele tjetër; që quhet prodhim kartezian. Tabela që rezulton nga një lidhje e tillë quhet tabela e Dekartit. Për shembull, nëse një tabelë A ka 100 regjistrime dhe tabela B ka 15 regjistrime, atëherë tabela e tyre karteziane do të përbëhet nga 100*15=150 rekorde. Pyetja e mëposhtme bashkon çdo rekord në tabelën m_income me çdo rekord në tabelën m_outcome:
NGA m_të ardhura, m_rezultat;

Pyetje Q031. Një shembull i grupimit të të dhënave sipas dy fushave. Kërkesa e mëposhtme SQL llogarit për çdo furnizues shumën dhe sasinë e mallrave të marra prej tij:


SUM (shuma*çmimi) AS të ardhurat_shuma

Kërkesa Q032. Një shembull i grupimit të të dhënave sipas dy fushave. Pyetja e mëposhtme llogarit për çdo furnizues sasinë dhe sasinë e produkteve të tyre të shitura nga ne:

SELECT ID_furnizuesi, ID_produkti, SHUMË (shuma) AS shuma_shuma,




GRUPI SIPAS furnizuesit_id, produkti_id;

Pyetje Q033. Në këtë shembull, dy pyetjet e mësipërme (q031 dhe q032) përdoren si nënpyetje. Rezultatet e këtyre pyetjeve duke përdorur metodën LEFT JOIN kombinohen në një raport. Pyetja e mëposhtme shfaq një raport mbi sasinë dhe sasinë e produkteve të marra dhe të shitura për secilin furnizues. Ju lutemi vini re se nëse një produkt tashmë është marrë, por nuk është shitur ende, atëherë qeliza e shumës së rezultatit për këtë hyrje do të jetë bosh. se kjo pyetje është vetëm një shembull i përdorimit të pyetjeve relativisht komplekse si nënpyetje. Performanca e kësaj pyetjeje SQL me një sasi të madhe të dhënash është e diskutueshme:

ZGJIDH *
NGA



SUM (shuma*çmimi) AS të ardhurat_shuma

ON a.product_id=b.id GRUPI SIPAS id-it të furnizuesit, id_produkti) AS a
LARTË BASHKOHET
(ZGJIDH ID_në_furnizues, ID_produkti, SUM(shuma) AS shuma_shuma,
SHUMË (shuma*çmimi) SI rezultati_shuma
NGA m_rezultati SI BASHKIM I BRENDSHËM m_produkt AS b
ON a.product_id=b.id GRUPI NGA furnizuesi_id, product_id) AS b
ON (a.produkt_id=b.id_produkti) DHE (a.id_supplier=b.id_supplier);

Pyetje Q034. Në këtë shembull, dy pyetjet e mësipërme (q031 dhe q032) përdoren si nënpyetje. Rezultatet e këtyre pyetjeve duke përdorur metodën RIGTH JOIN kombinohen në një raport. Pyetja e mëposhtme shfaq një raport mbi shumën e pagesave të çdo klienti sipas sistemeve të pagesave që ka përdorur dhe sasisë së investimeve që ka bërë. Pyetja e mëposhtme shfaq një raport mbi sasinë dhe sasinë e produkteve të marra dhe të shitura për secilin furnizues. Ju lutemi vini re se nëse një produkt tashmë është shitur, por nuk ka mbërritur ende, atëherë qeliza e shumës së të ardhurave për këtë hyrje do të jetë bosh. Prania e qelizave të tilla boshe është një tregues i një gabimi në kontabilitetin e shitjeve, pasi para një shitjeje fillimisht është e nevojshme që produkti përkatës të arrijë:

ZGJIDH *
NGA


(ZGJIDH ID_në_furnizues, ID_produkti, SUM(shuma) AS shuma_shuma,
SUM (shuma*çmimi) AS të ardhurat_shuma
NGA m_të ardhurat SI BASHKIM I BRENDSHËM m_produkt AS b ON a.product_id=b.id
GRUPI NGA furnizuesi_id, produkti_id) AS a
BASHKOHUNI DREJTË
(ZGJIDH ID_në_furnizues, ID_produkti, SUM(shuma) AS shuma_shuma,
SHUMË (shuma*çmimi) SI rezultati_shuma
NGA m_rezultati SI BASHKIM I BRENDSHËM m_produkt AS b ON a.product_id=b.id
GRUPI SIPAS furnizuesit_id, produkti_id) AS b
ON (a.id_supplier=b.id_supplier) DHE (a.produkt_id=b.id_produkti);

Pyetje Q035. Shfaqet një raport që tregon shumën e të ardhurave dhe shpenzimeve sipas produktit. Për ta bërë këtë, krijohet një listë e produkteve sipas tabelave m_të ardhura dhe m_rezultat, pastaj për secilin produkt nga kjo listë shuma e të ardhurave të tij llogaritet sipas tabelës m_të ardhura dhe shuma e shpenzimeve të tij sipas tabelës m_rezultat:

SELECT ID_produkti, SHUMË (në_shuma) AS të ardhurat_amount,


SUM(jashtë_shumës) SI rezultati_shuma
NGA
(ZGJIDHni ID_në e produktit, shuma AS në_shuma, 0 AS jashtë_shuma
NGA m_të ardhura
UNION TË GJITHA
SELECT product_id, 0 AS in_mount, shuma AS out_mount
NGA m_rezultati) AS t
GRUPI SIPAS product_id;

Pyetje Q036. Funksioni EXISTS kthen TRUE nëse grupi i kaluar përmban elemente. Funksioni EXISTS kthen FALSE nëse grupi i kaluar është bosh, domethënë nuk përmban elementë. Kërkesa e mëposhtme shfaq kodet e produktit që gjenden në tabelat m_income dhe m_outcome:

ZGJIDH ID-në e produktit TË DAKTUAR


NGA m_të ardhura AS a
KU EKZISTON(ZGJIDH ID_në e produktit NGA m_rezultati SI b

Pyetje Q037. Shfaqen kodet e produkteve që gjenden në tabelat m_income dhe m_outcome:

ZGJIDH ID-në e produktit TË DAKTUAR


NGA m_të ardhura AS a
WHERE product_id IN (ZGJIDH ID_produkti NGA m_rezultat)

Pyetje Q038. Shfaqen kodet e produkteve që gjenden në tabelën m_të ardhura, por nuk përfshihen në tabelën m_rezultat:

ZGJIDH ID-në e produktit TË DAKTUAR


NGA m_të ardhura AS a
KU NUK EKZISTON(ZGJIDH ID_Produkti NGA m_rezultati SI b
KU b.produkt_id=a.produkt_id);

Pyetje Q039. Shfaqet një listë e produkteve me shumën maksimale të shitjeve. Algoritmi është si më poshtë. Për çdo produkt llogaritet shuma e shitjeve të tij. Më pas, përcaktohet maksimumi i këtyre shumave. Më pas, për secilin produkt, përsëri llogaritet shuma e shitjeve të tij dhe shfaqet kodi dhe shuma e shitjeve të mallrave, shuma e shitjeve të të cilave është e barabartë me maksimumin:

SELECT ID_produkti, SUM(shuma*çmimi) AS shuma_shuma


NGA m_rezultat
GRUPI SIPAS product_id
KATË ​​SHUMË (shuma*çmimi) = (ZGJIDH MAX (s_samount)
FROM (SELECT SUM (shuma*çmimi) AS s_samount FROM m_rezultat GROUP BY product_id));

Pyetje Q040. Fjala e rezervuar IIF (operator i kushtëzuar) përdoret për të vlerësuar një shprehje logjike dhe për të kryer një veprim në varësi të rezultatit (TRUE ose FALSE). Në shembullin e mëposhtëm, dërgesa e artikullit konsiderohet "e vogël" nëse sasia është më e vogël se 500. Përndryshe, domethënë, sasia e marrjes është më e madhe ose e barabartë me 500, dërgesa konsiderohet "e madhe":

SELECT dt, id_produkti, shuma,


IIF(shuma NGA m_të ardhura;

SQL Query Q041. Në rastin kur operatori IIF përdoret disa herë, është më i përshtatshëm ta zëvendësoni atë me operatorin SWITCH. Operatori SWITCH (operatori i përzgjedhjes së shumëfishtë) përdoret për të vlerësuar një shprehje logjike dhe për të kryer një veprim në varësi të rezultatit. Në shembullin vijues, loti i dorëzuar konsiderohet "i vogël" nëse sasia e mallrave në lot është më e vogël se 500. Përndryshe, domethënë nëse sasia e mallrave është më e madhe ose e barabartë me 500, loti konsiderohet "i madh ":

SELECT dt, id_produkti, shuma,


SWITCH (sasia =500"i madh") AS mark
NGA m_të ardhura;

Pyetje Q042. Në kërkesën e radhës, nëse sasia e mallrave në grupin e marrë është më e vogël se 300, atëherë grumbulli konsiderohet “i vogël”. Përndryshe, që do të thotë, nëse shuma e kushtit SELECT dt, product_id, shuma,
IIF(shuma IIF(shuma NGA m_të ardhura;

SQL Query Q043. Në kërkesën e radhës, nëse sasia e mallrave në grupin e marrë është më e vogël se 300, atëherë grumbulli konsiderohet “i vogël”. Përndryshe, që do të thotë, nëse shuma e kushtit SELECT dt, product_id, shuma,
SWITCH (shuma e shumës>=1000"madhe") AS mark
NGA m_të ardhura;

SQL Query Q044. Në pyetjen e mëposhtme, shitjet ndahen në tre grupe: të vogla (deri në 150), të mesme (nga 150 në 300), të mëdha (300 ose më shumë). Më pas, shuma totale llogaritet për secilin grup:

ZGJIDH Kategorinë, SUM(shuma_outcome) AS Ctgry_Total


FROM (ZGJIDH shumën*çmimin SI rezultatin_shumën,
IIf(shuma*çmimi IIf(shuma*çmimi NGA m_rezultati) AS t
GRUPI SIPAS Kategorisë;

SQL Query Q045. Funksioni DateAdd përdoret për të shtuar ditë, muaj ose vite në një datë të caktuar dhe për të marrë një datë të re. Kërkesa e radhës:
1) i shton datës 30 ditë nga fusha dt dhe shfaq datën e re në fushën dt_plus_30d;
2) shton 1 muaj datës nga fusha dt dhe shfaq datën e re në fushën dt_plus_1m:

SELECT dt, dateadd("d",30,dt) AS dt_plus_30d, dateadd("m",1,dt) AS dt_plus_1m


NGA m_të ardhura;

SQL Query Q046. Funksioni DateDiff është krijuar për të llogaritur diferencën midis dy datave në njësi të ndryshme (ditë, muaj ose vite). Pyetja e mëposhtme llogarit ndryshimin midis datës në fushën dt dhe datës aktuale në ditë, muaj dhe vite:

SELECT dt, DateDiff("d",dt,Date()) AS dita e fundit,


DateDiff("m",dt,Date()) AS muajt e fundit,
DateDiff("vvvv",dt,Data()) SI vitet e fundit
NGA m_të ardhura;

SQL Query Q047. Numri i ditëve nga data e marrjes së mallrave (tabela m_të ardhurat) deri në datën aktuale llogaritet duke përdorur funksionin DateDiff dhe data e skadencës krahasohet (tabela m_produkt):


DateDiff("d",dt,Date()) AS ditët e fundit
NGA m_të ardhura SI BASHKIM I BRENDSHËM m_produkt SI b
ON a.produkt_id=b.id;

SQL Query Q048. Llogaritet numri i ditëve nga data e marrjes së mallit deri në datën aktuale, pastaj kontrollohet nëse kjo sasi e kalon datën e skadencës:

SELECT a.id, product_id, dt, lifedays,


DateDiff("d",dt,Date()) AS ditët e fundit, IIf(ditët e fundit>jetën,"Po","Jo") AS data_skadojë
NGA m_të ardhura një BASHKIMI I BRENDSHËM m_produkt b
ON a.produkt_id=b.id;

SQL Query Q049. Përllogaritet numri i muajve nga data e marrjes së mallrave deri në datën aktuale. Kolona month_last1 llogarit numrin absolut të muajve, kolona month_last2 llogarit numrin e muajve të plotë:

SELECT dt, DateDiff("m",dt,Date()) AS muaji_fundit1,


DateDiff("m",dt,Data())-iif(dita(dt)>dita(data()),1,0) AS muaji_i fundit2
NGA m_të ardhura;

SQL Query Q050. Afishohet një raport tremujor për sasinë dhe sasinë e mallrave të blera për vitin 2011:

SELECT kvartal, SUM(shuma_outcome) AS Total


FROM (ZGJIDH shumën*çmimin AS rezultati_shuma, muaji(dt) AS m,
KALUAR (m =10.4) SI kvartal
NGA m_të ardhura KU viti(dt)=2011) SI t
GRUPI PËR tremujor;

Pyetje Q051. Pyetja e mëposhtme ndihmon për të zbuluar nëse përdoruesit ishin në gjendje të fusin në sistem informacione për konsumin e mallrave në një sasi më të madhe se sasia e mallrave të marra:

SELECT ID_produkti, SUM(në_shuma) AS shuma_e ardhurash, SUM(shuma_jashtë) AS shuma_e_rezultatit


FROM (ZGJIDHni ID_produkti, shuma*çmimi si në_sum, 0 si jashtë_shumës
nga m_të ardhurat
UNION TË GJITHA
SELECT product_id, 0 si në_sum, shuma*çmimi si out_sum
nga m_rezultati) AS t
GRUPI SIPAS product_id
KA SHUMË (në_shuma)
Pyetje Q052. Numërimi i rreshtave të kthyer nga një pyetje zbatohet në mënyra të ndryshme. Për shembull, mund të rinumëroni rreshtat e një raporti të përgatitur në MS Access duke përdorur vetë MS Access. Ju gjithashtu mund të rinumëroni duke përdorur gjuhë programimi, për shembull, VBA ose PHP. Sidoqoftë, ndonjëherë kjo duhet të bëhet në vetë pyetjen SQL. Pra, pyetja e mëposhtme do të numërojë rreshtat e tabelës m_të ardhura sipas rendit në rritje të vlerave të fushës ID:

SELECT COUNT(*) si N, b.id, b.product_id, b.samount, b.price


NGA m_të ardhura një BASHKIM I BRENDSHËM m_të ardhura b NË a.id GRUP SIPAS b.id, b.produkt_id, b.sasia, b.çmimi;

Pyetje Q053. Shfaqen pesë produktet kryesore midis produkteve sipas sasisë së shitjeve. Pesë regjistrimet e para shtypen duke përdorur udhëzimin TOP:

ZGJIDH TOP 5, product_id, shuma (shuma*çmimi) AS përmbledhje


NGA m_rezultat
GRUPI SIPAS product_id
RENDOSJE SIPAS shumës (shuma*çmimi) DESC;

Pyetje Q054. Shfaqen pesë produktet kryesore midis produkteve sipas sasisë së shitjeve, dhe rreshtat numërohen si rezultat:

SELECT COUNT(*) AS N, b.product_id, b.summa


NGA


NGA m_rezultati GRUPI SIPAS produktit_id) AS a
BASHKIMI I BRENDSHËM
(ZGJIDH ID_në e produktit, shuma (shuma*çmimi) SI përmbledhje,
shuma*10000000+id_produkti AS id
NGA m_rezultati GRUPI SIPAS produktit_id) AS b
ON a.id>=b.id
GRUP BY b.product_id, b.summa
DUHET TË PASUR NUMËR (*) POROSIT ME NUMËR (*);

Pyetje Q055. Kërkesa e mëposhtme SQL tregon përdorimin e funksioneve matematikore COS, SIN, TAN, SQRT, ^ dhe ABS në MS Access SQL:

SELECT (zgjidh numrin(*) nga m_të ardhura) si N, 3.1415926 si pi, k,


2*pi*(k-1)/N si x, COS(x) si COS_, SIN(x) si SIN_, TAN(x) si TAN_,
SQR(x) si SQRT_, x^3 si "x^3", ABS(x) si ABS_
FROM (ZGJIDH COUNT(*) AS k
NGA m_të ardhura SI BASHKIM I BRENDSHËM m_të ardhura SI b NË a.idGROUP BY b.id) t;

SQL Query. Shembuj në MS Access. PËRDITËSIM: 1-10

Kërkesa U001. Kërkesa e mëposhtme e ndryshimit SQL rrit çmimet e mallrave me kodin 3 në tabelën m_të ardhura me 10%:

PËRDITËSINI m_të ardhura SET çmimi = çmimi*1.1


KU produkti_id=3;

Kërkesa U002. Kërkesa e mëposhtme e përditësimit të SQL rrit sasinë e të gjitha produkteve në tabelën m_të ardhura me 22 njësi, emrat e të cilëve fillojnë me fjalën "Vaj":

PËRDITËSINI m_të ardhura SET shuma = shuma+22


WHERE product_id IN (ZGJEDH ID-në FROM m_produkt WHERE titullin LIKE "Oil*");

Kërkesa U003. Kërkesa e mëposhtme SQL për një ndryshim në tabelën m_outcome ul çmimet e të gjitha mallrave të prodhuara nga Sladkoe LLC me 2 përqind:

PËRDITËSOJE m_rezultatin SET çmimi = çmimi*0,98


KU IN: ID_i i produktit
(ZGJIDHni një.id NGA m_produkt një BASHKIM I BRENDSHËM m_furnizues b
ON a.supplier_id=b.id WHERE b.title="LLC"Сладкое"");. !}

Puna laboratorike nr.1

SQL: EKSTRAKTIMI I TË DHËNAVE - komandaZGJIDH

Qëllimi i punës:

  • familjarizohuni me deklaratat SQL;
  • mësoni se si të krijoni pyetje të thjeshta SQL në Access duke përdorur komandën SELECT;

· përdorimi i operatorëve IN, BETWEEN, LIKE, ËSHTË NULL.

Ushtrimi№1. Krijoni një pyetje për të zgjedhur në modalitetin SQL të gjitha vlerat e fushave EMRI dhe MBIEMRI nga tabela STUDENTS.

ZGJIDH EMRIN, MBIEMRIN

NGA STUDENTET;

Ushtrimi№2 . Krijo një pyetje për të zgjedhur në modalitetin SQL të gjitha kolonat e tabelës STUDENTS.

ZGJIDH *

NGA STUDENTET;


Detyra nr. 3. Krijo një pyetje për të zgjedhur në modalitetin SQL emrat e qyteteve ku jetojnë studentët, informacioni për të cilin gjendet në tabelën TË DHËNAT PERSONALE.

ZGJIDH QYTETIN E NDRYSHËM

NGA [TË DHËNAT PERSONALE];

Detyra nr. 4. Krijo një pyetje përzgjedhjeje në modalitetin SQL që merr emrat e të gjithë studentëve me mbiemrin Ivanov, informacion për të cilin gjendet në tabelën STUDENTS.

ZGJIDH MBIEMRI, EMRI

NGA STUDENTET

KU MBI EMRI="Ivanov";

Detyra nr 5. Krijoni një pyetje përzgjedhjeje në modalitetin SQL për të marrë emrat dhe mbiemrat e studentëve që studiojnë në grupin UIT-22 në një formë buxhetore të arsimit.

ZGJIDH MBIEMRI, EMRI

NGA STUDENTET

WHERE GROUP="UIT-22" DHE BUXHET=true;

Detyra nr. 6. Krijoni një pyetje në modalitetin SQL. për një mostër nga tabela e PROVIMIT, informacione për nxënësit që kanë vetëm notat 4 dhe 5.

ZGJIDH *

NGA [NDRYSHIMPROVIMIT]

KUGRADËIN (4,5);

Detyra nr 7. Krijoni një modalitet zanpoc dhe SQL për të zgjedhur informacione rreth studentëve që kanë notën 3 të provimit në lëndën IOSU.

ZGJIDH *

NGA [NDRYSHIMPROVIMIT]

KUARTIKU=" IOSU"DheGRADËJo In (4,5);

Detyra nr 8. Krijoni një pyetje në modalitetin SQL për të zgjedhur regjistrimet për artikujt orët e të cilëve janë midis 100 dhe 130.

ZGJIDH *

NGASENDET

KUSHOKËMES 100 DHE 130;


Detyra nr. 9. Krijoni një pyetje në modalitetin SQL për të zgjedhur nga tabela STUDENTS informacione për studentët, mbiemrat e të cilëve fillojnë, për shembull, me shkronjën "C".

ZGJIDH *

NGASTUDENTET

KUMBIEMRILIKE"ME*";

konkluzioni: Gjatë punës laboratorike, u njohëm me udhëzimet SQL, mësuam se si të krijojmë pyetje të thjeshta SQL në Access duke përdorur komandën SELECT duke përdorur operatorët IN, BETWEEN, LIKE.

Shembuj të pyetjeve SQL mund të përdoren për të mësuar dhe praktikuar shkrimin e pyetjeve SQL në MS Access.

Një pyetje SQL mund të vendoset brenda një tjetri. Një nën-pyetje nuk është gjë tjetër veçse një pyetje brenda një pyetjeje. Në mënyrë tipike, një nënpyetje përdoret në klauzolën WHERE. Por ka mënyra të tjera për të përdorur nënpyetje.

Pyetje Q011. Shfaqen informacione rreth produkteve nga tabela m_product, kodet e të cilave janë gjithashtu në tabelën m_të ardhura:

ZGJIDH *
NGA m_produkt
WHERE id IN (ZGJIDHni ID_produkti NGA m_të ardhurat);

Kërkesa Q012. Shfaqet një listë e produkteve nga tabela m_product, kodet e të cilave nuk janë në tabelën m_outcome:

ZGJIDH *
NGA m_produkt
WHERE id NOT IN (ZGJIDHni ID_produkti NGA m_outcome);

Kërkesa Q013. Ky pyetje SQL shfaq një listë unike të kodeve dhe emrave të produkteve që janë në tabelën m_income por jo në tabelën m_outcome:

ZGJIDH ID-në e produktit TË NDRYSHËM, titull
NGA m_të ardhura BASHKOHU INNER m_produkt
ON m_income.product_id=m_product.id
WHERE product_id NOT IN (ZGJIDH ID_produkti NGA m_rezultati);

Pyetje Q014. Një listë unike e kategorive emrat e të cilave fillojnë me shkronjën M shfaqet nga tabela m_category:

ZGJIDHni titullin TË NDRYSHËM
NGA m_produkt
KU titulli LIKE "M*";

Pyetje Q015. Një shembull i kryerjes së veprimeve aritmetike në fushat në një pyetje dhe riemërtimit të fushave në një pyetje (alias). Ky shembull llogarit shpenzimin = sasinë *çmimin dhe fitimin për çdo hyrje të shpenzimeve të artikullit, duke supozuar se fitimi është 7 përqind e shitjeve:


shuma*çmimi/100*7 AS fitim
NGA m_rezultati;

Pyetje Q016. Duke analizuar dhe thjeshtuar veprimet aritmetike, ju mund të rrisni shpejtësinë e ekzekutimit të pyetjes:

SELECT dt, ID_produkti, shuma, çmimi, shuma*çmimi AS rezultati_shuma,
rezultati_shuma*0.07 AS fitimi
NGA m_rezultati;

Pyetje Q017. Ju mund të përdorni deklaratën JOIN INNER për të bashkuar të dhëna nga tabela të shumta. Në shembullin e mëposhtëm, në varësi të vlerës së ctgry_id, çdo hyrje në tabelën m_income përputhet me emrin e kategorisë nga tabela m_category së cilës i përket produkti:

ZGJIDH c.titull, b.titull, dt, shuma, çmimi, shuma*çmimi AS të ardhurat_shuma
NGA (m_të ardhura SI BASHKIM I BRENDSHËM m_produkt AS b ON a.produkt_id=b.id)
BASHKIMI I BRENDSHËM m_kategoria SI c ON b.ctgry_id=c.id
RENDIT ME c.titull, b.titull;

Kërkesa Q018. Funksionet si SUM - shuma, COUNT - sasia, AVG - mesatare aritmetike, MAX - vlera maksimale, MIN - vlera minimale quhen funksione agregate. Ata pranojnë shumë vlera dhe pas përpunimit të tyre kthejnë një vlerë të vetme. Një shembull i llogaritjes së shumës së produktit të fushave të shumës dhe çmimit duke përdorur funksionin agregat SUM.