{"id":228,"date":"2023-03-22T11:34:02","date_gmt":"2023-03-22T11:34:02","guid":{"rendered":"https:\/\/tarkvara.thkit.ee\/veeb\/?page_id=228"},"modified":"2023-03-29T11:01:33","modified_gmt":"2023-03-29T11:01:33","slug":"kaubad-ja-kaubagrupid","status":"publish","type":"page","link":"https:\/\/tarkvara.thkit.ee\/veeb\/kaubad-ja-kaubagrupid\/","title":{"rendered":"Kaubad ja kaubagrupid"},"content":{"rendered":"\n<p>Siin alustame taas v\u00f5imalikult lihtsalt &#8211; seome omavahel kokku kaks andmetabelit. \u00dches on kirjas olemasolevad kaubagrupid &#8211; igal grupil id ja grupinimi. Teises tabelis on tooted, kusjuures iga toode kuulub kindlasse gruppi. Selliselt kirja pannes on v\u00f5imalik andmeid viisakasti vaadata gruppide kaupa. Pole karta, et \u00fcks kirjutab t\u00f6\u00f6riistad v\u00e4ikese, teine suure t\u00e4hega ning arvuti jaoks v\u00f5ivad vastavates gruppides olevad asjad sootuks erinevatena tunduda. Kui ikka grupi nimi valitakse toote juurde rippmen\u00fc\u00fcst, siis pole v\u00f5imalik selle valimise juures enam grupi nime vigaselt kirjutada. N\u00e4itrakenduse teemaks tuleb&nbsp;&nbsp;<\/p>\n\n\n\n<p>Kaupade otsing poes (tootekataloog)&nbsp;<\/p>\n\n\n\n<p>Rakenduse jaoks vajame kahte andmetabelit.&nbsp;<\/p>\n\n\n\n<p><strong>kaubad:\u00a0<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>id nimetus<\/td><\/tr><tr><td>kaubagrupi_id hind<\/td><\/tr><tr><td><strong>kaubagrupid<\/strong><\/td><\/tr><tr><td>id grupinimi\u00a0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Sisuandmed n\u00e4iteks:\u00a0<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>kaubagrupid<\/strong><\/td><\/tr><tr><td>1 tellised\u00a0<\/td><\/tr><tr><td>2 katusematerjal<\/td><\/tr><tr><td>3 vineer\u00a0<\/td><\/tr><tr><td><strong>kaubad\u00a0<\/strong><\/td><\/tr><tr><td>1 ahjutellis 1 8.20\u00a0<\/td><\/tr><tr><td>2 fassaaditellis 1 7.50\u00a0<\/td><\/tr><tr><td>3 bituumenrull 2 520.00\u00a0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Kaupade tabeli kaubagrupi_id n\u00e4itab kaubagruppide tabeli id-le. Siit saab siis v\u00e4lja lugda, et ahjutellis ja fassaaditellis kuluvad m\u00f5lemad gruppi &#8220;tellised&#8221; ehk gruppi nr 1. Bituumenrull aga l\u00e4heb teise grupi ehk katusematerjali alla.&nbsp;<\/p>\n\n\n\n<p>Teeme esimese tabeli SQL-lause abil valmis<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nCREATE TABLE kaubagrupid( \n id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, \n grupinimi VARCHAR(255) \n); \n\n<\/pre><\/div>\n\n\n<p>ning lisame m\u00f5ned andmed sisse.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nINSERT INTO kaubagrupid(grupinimi) VALUES (&#039;tellised&#039;); \nINSERT INTO kaubagrupid(grupinimi) VALUES (&#039;katusematerjal&#039;);\n\n<\/pre><\/div>\n\n\n<p>P\u00e4ringuga kontrollime, et andmed ikka kohale j\u00f5udsid. Samuti saame teada tekkinud gruppide id-d.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"284\" height=\"137\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/2-1.png\" alt=\"\" class=\"wp-image-232\"\/><\/figure>\n\n\n\n<p>Kui grupid olemas, on p\u00f5hjust luua kaupade tabel.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nCREATE TABLE kaubad( \n id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, \n nimetus VARCHAR(255), \n kaubagrupi_id INT, \n hind DECIMAL(10, 2) \n); \n\n<\/pre><\/div>\n\n\n<p>Iseenesest me teame, et kaupade tabeli kaubagrupi_id n\u00e4itab kaubagruppide tabeli id peale. Seda saaks ka SQL lauses m\u00e4rkida (FOREIGN KEY(kaubagrupi_id) REFERENCES kaubagrupid(id)). Kuna aga MySQL vaikimisi juhul nagunii viiteterviklust ei kontrolli, siis pigem on t\u00e4htsam, et oma peas meeles oleks, mis millega ja kuidas seotud.&nbsp;<\/p>\n\n\n\n<p>Andmete lisamiseks SQLi kaudu paneme siis praegu lihtsalt vastavad grupinumbrid lausesse kirja.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nINSERT INTO kaubad (nimetus, kaubagrupi_id, hind) VALUES (&#039;ahjutellis&#039;, 1, 8.20); \nINSERT INTO kaubad (nimetus, kaubagrupi_id, hind) VALUES (&#039;fassaaditellis&#039;, 1, 7.50); \nINSERT INTO kaubad (nimetus, kaubagrupi_id, hind) VALUES (&#039;bituumenrull&#039;, 2, 520); \n\n<\/pre><\/div>\n\n\n<p>SELECTi abil kontrollime j\u00e4rgi, et soovitud andmed ikka baasi kohale j\u00f5udsid.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"401\" height=\"131\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/3-1.png\" alt=\"\" class=\"wp-image-234\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/3-1.png 401w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/3-1-300x98.png 300w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><\/figure>\n\n\n\n<p>ID-numbrid on k\u00fcll programmeerija jaoks toredad, kuid tavainimene armastab andmeid siiski s\u00f5nalisel kujul lugeda. J\u00e4rgmise lause abil saab n\u00e4ha kauba nimetust, s\u00f5nalist grupinime (mis v\u00f5etud kaubagruppide tabelist) ning kauba hinda. Selleks kirjutan soovitud tulbad SELECTi j\u00e4rele. FROM-ossa m\u00e4rgin kasutatavad andmetabelid ning WHERE tingimuses panen kirja, kuidas tabelid omavahel seotud on. Siinsel juhul siis tabeli kaubad tulp kaubagrupi_id n\u00e4itab tabeli kaubagrupid tulbale id. V\u00f5imalikest kummagi tabeli ridade kombinatsioonidest n\u00e4idatakse v\u00e4lja siis vaid need, kus kaupade tabeli kaubagrupi_id kattub kaubagruppide tabeli id-ga.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT nimetus, grupinimi, hind \nFROM kaubad, kaubagrupid \nWHERE kaubad.kaubagrupi_id=kaubagrupid.id; \n\n<\/pre><\/div>\n\n\n<p>Mugavuse m\u00f5ttes on hea SQL-lause enne m\u00f5nes tekstiredaktoris valmis kirjutada ning alles siis MySQLi viiba otsa kopeerida. Sellisel juhul on m\u00f5ne vea puhul kergesti v\u00f5imalik lauset t\u00e4iendada\/parandada ning uuesti katsetada.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"377\" height=\"167\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/4-1.png\" alt=\"\" class=\"wp-image-236\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/4-1.png 377w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/4-1-300x133.png 300w\" sizes=\"auto, (max-width: 377px) 100vw, 377px\" \/><\/figure>\n\n\n\n<p>P\u00e4ringu tulemus paistis t\u00e4iesti ootusp\u00e4rane olema: tellised kuuluvad telliste gruppi ning bituumenrull katusele.&nbsp;<\/p>\n\n\n\n<p>M\u00f5ned SQL-laused veel. Tingimuste abil saab osa ridu peita, ehk siis soovitud v\u00e4lja n\u00e4idata. J\u00e4rgnevalt kaubad, mille t\u00fckihind on alla k\u00fcmne krooni.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"472\" height=\"127\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/5-1.png\" alt=\"\" class=\"wp-image-237\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/5-1.png 472w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/5-1-300x81.png 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/figure>\n\n\n\n<p>Tekstide puhul on t\u00e4nuv\u00e4\u00e4rne funktsioon nimega LIKE. P\u00e4ringus\u00f5nas t\u00e4hendab protsent suvalist hulka suvalisi s\u00fcmboleid. Ehk siis praegu otsitakse k\u00f5ik kaubad, mille nimes sisaldub s\u00f5na tellis.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"565\" height=\"120\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/6.png\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/6.png 565w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/6-300x64.png 300w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/figure>\n\n\n\n<p>Mitme tabeli \u00fchendamine ning piirang p\u00e4ringu juures v\u00f5ivad kehtida ka \u00fcheaegselt.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT nimetus, grupinimi, hind \n FROM kaubad, kaubagrupid \n WHERE kaubad.kaubagrupi_id=kaubagrupid.id \n AND nimetus LIKE &#039;%tellis%&#039;; \n\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"324\" height=\"120\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/7.png\" alt=\"\" class=\"wp-image-242\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/7.png 324w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/03\/7-300x111.png 300w\" sizes=\"auto, (max-width: 324px) 100vw, 324px\" \/><\/figure>\n\n\n\n<p>Kui p\u00e4ringusse lisada ka id-tulp, siis juhtub tulema veateade:&nbsp;<\/p>\n\n\n\n<p>Column &#8217;id&#8217; in field list is ambiguous&nbsp;<\/p>\n\n\n\n<p>Kuna m\u00f5lemal tabelil on vastava nimega tulp olemas, et teata, kas soovitakse n\u00e4ha kauba v\u00f5i kaubagrupi id-numbrit. Selle vastu aitab, kui tulba ette kirjutada tabeli nimi ehk siis praegusel juhul kaubad.id.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Siin alustame taas v\u00f5imalikult lihtsalt &#8211; seome omavahel kokku kaks andmetabelit. \u00dches on kirjas olemasolevad kaubagrupid &#8211; igal grupil id ja grupinimi. Teises tabelis on tooted, kusjuures iga toode kuulub kindlasse gruppi. Selliselt kirja pannes on v\u00f5imalik andmeid viisakasti vaadata gruppide kaupa. Pole karta, et \u00fcks kirjutab t\u00f6\u00f6riistad v\u00e4ikese, teine suure t\u00e4hega ning arvuti jaoks &hellip; <a href=\"https:\/\/tarkvara.thkit.ee\/veeb\/kaubad-ja-kaubagrupid\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">Kaubad ja kaubagrupid<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-228","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/comments?post=228"}],"version-history":[{"count":12,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/228\/revisions"}],"predecessor-version":[{"id":324,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/228\/revisions\/324"}],"wp:attachment":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/media?parent=228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}