Ste vedeli? Podjetje TRSPLET s.p. je 4.maja 2015 spletno stran preusmerilo na Optiweb.

Podjetje Optiweb je na trgu že 6 let in ponuja celostno storitev spletnega nastopa. Poskrbimo za izdelavo spletnih strani na sistemu Wordpress in spletnih trgovin na platformi Magento.

Ukvarjamo se tudi z različnimi kanali spletnega marketinga; od različnih Google Adwords oglasov do Facebook oglaševanja. Posebej ponosni smo na naše uspehe pri optimizaciji spletnih mest za iskalnike, kjer že od začetka dosegamo odlične rezultate.

Želite predloge in nasvete, kako izboljšati vaš spletni nastop? Kontaktirajte nas prek
spletnega obrazca.

kuverta Lahko pa se vpišete tudi na seznam prejemnikov naših mesečnih e-novic, v katerih predstavljamo najnovejše trende (poslovnega) spletnega sveta. Nanje se lahko prijavite tukaj.

reference spletnih strani
2nd March

MySQL dupliciranje podatkov z INSERT INTO SELECT stavkom

Včasih potrebujemo določeno vsebino v posamezni tabeli podvojiti, naj bo to zaradi testnih razlogov ali zaradi dodatnih podatkov, ki jih potrebujemo in si prihranimo delo z ročnim vnašanjem. Na primer imamo podatke za določeno napravo, sedaj želimo podvojiti te podatke ter jih obenem malce spremeniti.

Pri standardnem uvozu podatkov v posamezno tabelo uporabljamo INSERT INTO stavek. Lahko izberemo med krajšo obliko, kjer naprej navedemo tabelo in nato vse stolpce za katero imamo definirano vrednost in nato posamezne sklope vrednosti, ki jih omejimo z oklepajema, ki jih ločimo z vejicami. Primer:
[sql]
INSERT INTO `files` (`file_id`, `file_extension`, `file_size`) VALUES
(25, 3, ‘jpg’, ‘20535’),
(34, 3, ‘jpg’, ‘23598’),
(35, 2, ‘pdf’, ‘412893’);
[/sql]

Zaradi preglednosti lahko tudi za vsako vrstico zapišemo oz. defenirano seznam vrednosti, ki jih želimo zapolniti oz. imamo definirane vrednosti:
[sql]
INSERT INTO `files` (`file_id`, `file_extension`, `file_size`) VALUES (25, 3, ‘jpg’, ‘20535’);
INSERT INTO `files` (`file_id`, `file_extension`, `file_size`) VALUES (34, 3, ‘jpg’, ‘23598’);
INSERT INTO `files` (`file_id`, `file_extension`, `file_size`) VALUES (35, 2, ‘pdf’, ‘412893’);
[/sql]

Poznamo pa še krajšo verzijo od prve in sicer tako, da ne navedemo seznam stolpcev katere želimo zapolniti pri čemer moramo poskrbeti, da nato zapolnimo vsa polja, ki so defenirana v posamezni tabeli. Primer:
[sql]
INSERT INTO `files` VALUES (25, 3, ‘jpg’, ‘20535’);
[/sql]

No, vrnimo se k prvotni problematiki in sicer kopiranju vsebine v posamezni tabeli s pomočjo SELECT stavka. Preprost primer:
[sql]
INSERT INTO ecards (`id`, `category_id`, `name` `hidden`, `created`, `modified`) SELECT null, category_id, name, hidden, NOW(), NOW() FROM `table` WHERE smt=’tst’
[/sql]

Null vrednost uporabimo za ID, s tem povzročimo auto-increment na primarnem ključu. Za ne-primarne ključe, kjer želimo za vsako vrstico povečati ID pa lahko uporabimo dodatno spremenljivko. Primer:
[sql]
SELECT @row_id := (SELECT MAX(id) FROM `table`);
INSERT INTO `table1` (SELECT @row_id := @row_id + 1, drugi_stolpec, tretji_stolpec FROM `table1`)
[/sql]

Dodatno lahko izvajamo tudi pod-izvedbe znotraj same izvedbe, primer:
[sql]
INSERT INTO ecards SELECT
null, (SELECT category_id FROM categories AS t1 WHERE smt=’test’ and t1.name=(SELECT name FROM ategories AS t2 WHERE t2.category_id=ecards.category_id )), ecards.name, ecards.file, ecards.hidden, NOW(), NOW() FROM `ecards` WHERE ecards.polje=’nekaj’
[/sql]

Z zgornjo poizvedbo pri kopiranju samih podatkov tudi pridobimo pravi ID kategorije, ki se razlikuje za posamezne sklope. Ker ima vsak posamezen sklop svoje kategorije moramo pri kreiranju podvojenega sklopa popraviti tudi id-je, ki kažejo na kopirane kategorije. Zato naredimo dve pod poizvedbe, kjer id kategorije dobimo preko imena trenutne kategorije.

Dodatne informacije:

Delodajalec: KMAG d.d.


Dodaj komentar

You must be logged in to post a comment.