Dec 30 2011

MSSQL verzija MySql funkcije NOW()

Problem:
Zanima nas MSSQL funkcija slična MySql funkciji NOW()

Rješenje:

SELECT  GETDATE()

Nov 25 2011

MSSQL – CONCAT

Problem:

Spajanje dvaju polja u jedno npr. prilikom SELECTA, dakle MSSQL verzija MySql funkcije CONCAT

http://systasis.biz/blog/?p=45

Rješenje:

 SELECT ime + ' ' + prezime as korisnik FROM tbl_osobe

Nov 25 2011

JavaScript – kreiranje (div) elementa pomoću javascripta

Problem:

Kreirati element, npr. div kroz javascript

Rješenje:


var mojDiv= document.createElement("div");
 mojDiv.id = "testDiv";
 mojDiv.style.display = "none";

... ostali parametri koji nam trebaju ...

document.body.appendChild(mojDiv);

Nov 25 2011

JQUERY – pozivanje jquery funkcije iz javascripta

Problem:

Kako pozvati funkciju “unutar jquery-a” iz javascripta koji nije “unutar jquery-a”?

Rješenje:

Pa zapravo je prvo potrebno definirati što znači “unutar jquery-a”?

ako pod time mislimo na neku funkciju koja se nalazi unutar

$(function() {

 });

ili

$(document).ready(function(){

 });

onda, koliko znam, nikako.

ALI!

Mnogi pogrešno misle da se jquery može koristiti samo unutar gore navedenog koda. Gore navedeni kod je samo funkcija koja se izvršava “when dom is ready”.

dakle, npr, ovo će raditi:

$(function() {

 });

function test(){

alert($('#pero').html());

}

<div onclick="test()" id="pero">Proba</div>

Klikom na tekst ‘Proba’ okida se funkcija koja alerta html elementa ‘pero’.  A ta funkcija test() nije “unutar jquery-a” (kako smo to pogrešno nazvali).


Nov 24 2011

MSSQL – dupliciranje tablice

Problem:

Trebamo duplicirati neku tablicu zajedno s podacima, npr. radi backupa i sl.

 

Rješenje:

SELECT * INTO tbl_backup FROM tbl_tablica

Ovo kopira strukturu i podatke. Na žalost morat ćemo ručno podesiti defaultne vrijednosti, primary i sl., ali data type polja i podatke uredno kopira.

Ako želimo samo strukturu bez podataka onda ide npr.

SELECT TOP 0 * INTO tbl_backup FROM tbl_tablica

 

 


Nov 23 2011

Cannot insert explicit value for identity column in table ‘tbl_x’ when IDENTITY_INSERT is set to OFF

Problem:

SQL error kod inserta u polje koje je označeno kao identity

Cannot insert explicit value for identity column in table ‘tbl_x’ when IDENTITY_INSERT is set to OFF

 

Rješenje:

SET IDENTITY_INSERT tbl_x ON

 

 


Oct 29 2011

MSSQL samo date iz datetime

Problem:

U bazi imamo polje datetime, a na ispisu nam treba samo datum

Rješenje:

SELECT convert(varchar(10),mojDatetime,104) as samoDatum

rezultat: 29.10.2011

U kojem će formatu izaći datum ovisi o zadnjem parametru (ovdje 104). Više o formatima ovdje:

http://linesofcode.net/snippets/45

http://msdn.microsoft.com/en-us/library/ms187928.aspx

Međutim, što ako nam datum ne treba na ispisu (u gornjem primjeru dobijemo datum kao varchar) nego za računanje. Tada može pomoći:

SELECT CAST(FLOOR( CAST( mojDatetime AS FLOAT ) )AS DATETIME) as samoDatum 

MSSQL – samo datum iz datetime 2

mojDatetime

Oct 15 2011

MSSQL vs MYSQL GROUP BY

Problem:

Kod MySql-a koristeći GROUP BY funkciju možemo selektirati neka dodatna polja uz ono polje po kojem grupiramo.

npr.


SELECT  ime, prezime, grad FROM tbl_adresar GROUP BY grad

Dobit ćemo rezultate grupirane po polju grad, ali i jedno od imena i prezimena koje stoje uz neki od tih rezultata.

Ako isto pokušamo napraviti u MSSQL dobit ćemo ovakav error:


Column 'tbl_adresar.ime' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Ako bi query preradili na gore sugerirani način:


SELECT  ime, prezime, grad FROM tbl_adresar GROUP BY grad, ime, prezime

Nebi dobili grešku, ali ni rezultat kakav očekujemo jer nas ne zanima grupiranje po imenu nego samo po gradu.

Rješenje:

Upotreba neke od MSSQL aggregate funkcije kod polja koja nisu grupirana.

min() bi možda moglo biti dobro rješenje.


SELECT  min(ime), min( prezime),  grad FROM tbl_adresar GROUP BY grad

Rezultat je sličan rezultatu dobivenom kod MySQL-a.

Grupirano po gradu, ali ispisuje i jedno ime i prezime koje u navedenu grupu pripada.

 


Oct 14 2011

MSSQL – traženje i brisanje duplikata

Problem:

Treba naći podatke u bazi koji se pojavljuju više od jednom. Dakle u pitanju je rješavanje duplića.

Rješenje:


SELECT ime,
 COUNT(ime) AS BrojPojavljivanja
FROM tbl_tablica
GROUP BY ime
HAVING ( COUNT(ime) > 1 )
ORDER BY BrojPojavljivanja DESC

Ok.. s time smo riješili traženje duplikata… ali kako ih maknuti, a da pri tome ne dobijemo probavne probleme?!
Gore navedeni query nam je rekao koji je podatak u pitanju i koliko ima istih, s time da je i onaj prvi koji nam treba u tom broju…

Slijedi jedan malo “seljačkiji” query ali nekako najpraktičniji za rješavanje ovih problema u kućnoj radinosti

SELECT * FROM tbl_tablica WHERE
 id > (
 SELECT min(id)
 FROM tbl_tablica x
 WHERE x.ime = tbl_tablica.ime
)

Ovim queryjem smo selektirali podatke samo onih redova koji su nam višak. Unutar queryja se ne nalazi ono jedno pojavljivanje koje nam treba nego samo duplikati tog jednog koji su nam višak.

Brisanje?

DELETE FROM tbl_tablica WHERE
 id > (
 SELECT min(id)
 FROM tbl_tablica x
 WHERE x.ime = tbl_tablica.ime
)

:)


Oct 14 2011

ASP – broj pojavljivanja karaktera ili stringa unutar stringa

Problem:

Problem je broj pojavljivanja karaktera ili stringa unutar stringa. Zadatak je prebrojati sva slova “a” unutar nekog teksta.

Rješenje:

x = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec volutpat  vestibulum dolor, eget condimentum nibh rutrum volutpat. Duis vitae orci  sit amet turpis ornare adipiscing. Vivamus vel dolor sit amet nisl  lobortis aliquam nec eget turpis. Etiam quis massa libero, eget cursus  urna. Nam nec tempus neque."

BrojPojavljivanja = UBound(Split(x, "a"))

response.write(BrojPojavljivanja)