praegune kellaaeg 20.06.2025 01:02:58
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
-vodafone-
HV Guru

liitunud: 26.04.2005
|
13.12.2011 00:23:31
lihtne SQL päring... |
|
|
Pole SQL´ga üldse sinapeal, ning töökohustuste tõttu pole ka jõudnud iseseisvalt järgi vedada ennast. Nimelt siis oleks vaja koolis õpitu järgi teha üks SQL päring. Andmebaas? on olemas , vaja tabelitest õiged valued vist määrata ja päring kokku panna.
Äkki keegi oskab juhiseid anda või väikse õpetusega (et aru saaks kuidastoimib) siia teada anda.
Nimelt oleks siis vaja sql päringu abil väljastada tabeli kujul "Linn ja Linna kaupluste müüjate arv"
Olemas on tabelid:
Kauplused , kus on KauplusID; Kaupluse nimi, LinnID
Linnad, kus on LinnID; Linna nimi
Myyjad, kus MyyjaID ;müüja nimi, LinnID, Kuaplus ID
Näiteks siis , et Linna Tallinn ID on 1 Linna Viljandi ID on 2 jne
|
|
Kommentaarid: 244 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
216 |
|
tagasi üles |
|
 |
Timukas0
HV kasutaja

liitunud: 20.03.2007
|
13.12.2011 01:32:59
|
|
|
Kas sul LinnID tabelis Myyjad üleliigne ei ole? Selle andmebaasi puhul kuulub eeldatavasti iga müüja ühte kauplusesse ja üks kaupluss ühte linna, seega saab müüja linna kaupluse tabelist kätte.
Igatahes tuleks käituda umbes nii:
Kõigepealt JOINida mitu tabelit (-- järel on kommentaarid):
sql:
|
SELECT * FROM Linnad l -- l on sünonüüm tabelile Linnad, et ei peaks 'Linnad' kogu aeg kirjutama LEFT JOIN Kauplused k ON k.LinnID = l.LinnID -- k samuti sünonüüm, LEFT JOIN valib vasakust tabelist (Linnad) kõik read ja seob iga ühega kõik kauplused LEFT JOIN Myyjad m ON m.KaupluseID = k.KaupluseID;
|
Tulemuseks suur tabel kõikide linnade, vastavate kaupluste ja müüjatega.
Järgmiseks GROUP BY abil saad kõik andmed konkreetse veeru järgi grupeerida:
sql:
|
SELECT * FROM Linnad l LEFT JOIN Kauplused k ON k.LinnID = l.LinnID LEFT JOIN Myyjad m ON m.KaupluseID = k.KaupluseID GROUP BY l.LinnID;
|
Nüüd saad iga linna kohta ühe rea, kus järel on üsna suvaliselt valitud üks kauplus ja üks müüja (või NULL nende puudumisel).
Viimane samm on müüjad kokku lugeda. Selleks on COUNT() funktsioon, mis tahab argumendiks veeru nime (või * kõikide veergude lugemiseks). Kokku tuleb:
sql:
|
SELECT l.LinnaNimi, COUNT(m.MyyjaID) -- valime ainult linna nimi ja müüjate arvu igas linnas FROM Linnad l LEFT JOIN Kauplused k ON k.LinnID = l.LinnID LEFT JOIN Myyjad m ON m.KaupluseID = k.KaupluseID GROUP BY l.LinnID;
|
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|