Siin alustame taas võimalikult lihtsalt – seome omavahel kokku kaks andmetabelit. Ühes on kirjas olemasolevad kaubagrupid – igal grupil id ja grupinimi. Teises tabelis on tooted, kusjuures iga toode kuulub kindlasse gruppi. Selliselt kirja pannes on võimalik andmeid viisakasti vaadata gruppide kaupa. Pole karta, et üks kirjutab tööriistad väikese, teine suure tähega ning arvuti jaoks võivad vastavates gruppides olevad asjad sootuks erinevatena tunduda. Kui ikka grupi nimi valitakse toote juurde rippmenüüst, siis pole võimalik selle valimise juures enam grupi nime vigaselt kirjutada. Näitrakenduse teemaks tuleb
Kaupade otsing poes (tootekataloog)
Rakenduse jaoks vajame kahte andmetabelit.
kaubad:
id nimetus |
kaubagrupi_id hind |
kaubagrupid |
id grupinimi |
Sisuandmed näiteks:
kaubagrupid |
1 tellised |
2 katusematerjal |
3 vineer |
kaubad |
1 ahjutellis 1 8.20 |
2 fassaaditellis 1 7.50 |
3 bituumenrull 2 520.00 |
Kaupade tabeli kaubagrupi_id näitab kaubagruppide tabeli id-le. Siit saab siis välja lugda, et ahjutellis ja fassaaditellis kuluvad mõlemad gruppi “tellised” ehk gruppi nr 1. Bituumenrull aga läheb teise grupi ehk katusematerjali alla.
Teeme esimese tabeli SQL-lause abil valmis
[crayon-68109ddc048c5420196349/]
ning lisame mõned andmed sisse.
[crayon-68109ddc048d0247796751/]
Päringuga kontrollime, et andmed ikka kohale jõudsid. Samuti saame teada tekkinud gruppide id-d.

Kui grupid olemas, on põhjust luua kaupade tabel.
[crayon-68109ddc048d2672791239/]
Iseenesest me teame, et kaupade tabeli kaubagrupi_id näitab kaubagruppide tabeli id peale. Seda saaks ka SQL lauses märkida (FOREIGN KEY(kaubagrupi_id) REFERENCES kaubagrupid(id)). Kuna aga MySQL vaikimisi juhul nagunii viiteterviklust ei kontrolli, siis pigem on tähtsam, et oma peas meeles oleks, mis millega ja kuidas seotud.
Andmete lisamiseks SQLi kaudu paneme siis praegu lihtsalt vastavad grupinumbrid lausesse kirja.
[crayon-68109ddc048d4053808663/]
SELECTi abil kontrollime järgi, et soovitud andmed ikka baasi kohale jõudsid.

ID-numbrid on küll programmeerija jaoks toredad, kuid tavainimene armastab andmeid siiski sõnalisel kujul lugeda. Järgmise lause abil saab näha kauba nimetust, sõnalist grupinime (mis võetud kaubagruppide tabelist) ning kauba hinda. Selleks kirjutan soovitud tulbad SELECTi järele. FROM-ossa märgin kasutatavad andmetabelid ning WHERE tingimuses panen kirja, kuidas tabelid omavahel seotud on. Siinsel juhul siis tabeli kaubad tulp kaubagrupi_id näitab tabeli kaubagrupid tulbale id. Võimalikest kummagi tabeli ridade kombinatsioonidest näidatakse välja siis vaid need, kus kaupade tabeli kaubagrupi_id kattub kaubagruppide tabeli id-ga.
[crayon-68109ddc048d6360346400/]
Mugavuse mõttes on hea SQL-lause enne mõnes tekstiredaktoris valmis kirjutada ning alles siis MySQLi viiba otsa kopeerida. Sellisel juhul on mõne vea puhul kergesti võimalik lauset täiendada/parandada ning uuesti katsetada.

Päringu tulemus paistis täiesti ootuspärane olema: tellised kuuluvad telliste gruppi ning bituumenrull katusele.
Mõned SQL-laused veel. Tingimuste abil saab osa ridu peita, ehk siis soovitud välja näidata. Järgnevalt kaubad, mille tükihind on alla kümne krooni.

Tekstide puhul on tänuväärne funktsioon nimega LIKE. Päringusõnas tähendab protsent suvalist hulka suvalisi sümboleid. Ehk siis praegu otsitakse kõik kaubad, mille nimes sisaldub sõna tellis.

Mitme tabeli ühendamine ning piirang päringu juures võivad kehtida ka üheaegselt.
[crayon-68109ddc048d8690255828/]

Kui päringusse lisada ka id-tulp, siis juhtub tulema veateade:
Column ’id’ in field list is ambiguous
Kuna mõlemal tabelil on vastava nimega tulp olemas, et teata, kas soovitakse näha kauba või kaubagrupi id-numbrit. Selle vastu aitab, kui tulba ette kirjutada tabeli nimi ehk siis praegusel juhul kaubad.id.