Mar 6 2019

MySQL – GROUP_CONCAT

SELECT type as result FROM tbl_users

Result:
admin
admin
user
admin
editor

SELECT GROUP_CONCAT(type) as result FROM tbl_users

Result:
admin,admin,user,admin,editor

https://database.guide/how-to-return-query-results-as-a-comma-separated-list-in-mysql/

MSSQL equivalent is STRING_AGG()


Sep 1 2017

MySQL – razlika u satima – TIMESTAMPDIFF

Problem: zanima nas popis proizvoda koji su dodani u košaricu unutar 24 sata. Dakle, ne 1 dan jer je između 23:00 i 01:00 drugi dan razlika od jednog dana, ali od samo dva sata.

Rješenje:


SELECT

TIMESTAMPDIFF (HOUR, tbl_kosarica.vrijeme_dodavanja, NOW())  as difference

FROM

tbl_kosarica

WHERE TIMESTAMPDIFF(HOUR, tbl_kosarica.vrijeme_dodavanja, NOW()) < 24

Dec 5 2016

MySql – selektiranje mjeseca i godine iz datuma istovremeno

Problem: treba selektirati iz MySql baze vrijeme i godinu iz polja datum radi uspoređivanja. Npr. za datum 28.12.2016.

Rješenje:

EXTRACT(YEAR_MONTH FROM datum)

Query vraća kao rezultat izraz: 201612


Jul 7 2015

MYSQL – promjena samo vremena na datetime polju

Problem:

želimo datetime polju promijeniti samo vrijeme, a da nam datum ostane isti

 

Rješenje:

UPDATE tbl_tablica SET datum = CONCAT(date(datum)," ", CURTIME())

WHERE id=123

ovo unesenom datumu pridodaje trenutno vrijeme


Apr 29 2015

MySQL – FULL OUTER JOIN nadomjestak

Problem:

Trebamo spojiti podatke iz dvije tablice na način da dobijemo sve podatke iz obje tablice s time da se podaci koji se poklapaju ne ponavljaju nego joinaju.

Tu bi poslužio nekakav FULL OUTER JOIN.

Kad bi ga bilo.

S obzirom da ga nema:

Rješenje:


SELECT * FROM tbl_a
LEFT JOIN tbl_b ON tbl_a.id = tbl_b.id
UNION
SELECT * FROM tbl_a
RIGHT JOIN tbl_b ON tbl_a.id = tbl_b.id

Oct 13 2014

MYSQL – lokalizacija datuma

Problem:

trebamo dobiti naziv za mjesec iz nekog datuma

Rješenje:

MONTHNAME(STR_TO_DATE(MONTH(datum_i_vrijeme), ‘%m’))

Međutim, to nam daje engleske nazive mjeseci. Da bi dobili hrvatske moramo postaviti sljedeći upit na bazu:

SET lc_time_names = ‘hr_HR’


Sep 18 2014

MySQL: CONCAT dva polja od kojih je jedno null vraća null

Problem: trebamo prilikom ispisa spojiti dva polje (ime=’Pero’, prezime=’Perić’) u jedno (osoba=’Pero Perić’)

npr.


SELECT CONCAT(ime,' ',prezime) AS osoba FROM tbl_osobe

U slučaju da je ime ili prezime null i osoba će biti null, a ne Pero ili Perić kako bismo htjeli.

 

Rješenje: upotreba kunkcije CONCAT_WS


SELECT CONCAT_WS('  ',ime,prezime) AS osoba FROM tbl_osobe

Ako je ime null rezultat je Perić, a ako je prezime null rezultat je Pero…


Apr 8 2014

MySQL – gdje je datum stariji od x dana

Problem:

Selektirati iz baze sve redove gdje je datum stariji od npr. 30 dana

Rješenje:


SELECT FROM tablica WHERE datum < DATE_SUB(NOW(), INTERVAL 30 DAY);

 


Mar 3 2014

MySQL – Selekt iz tablice A nečega što nema u tablici B

Problem: Selektirati iz tablice tbl_a sve gdje vrijednost tbl_a.x nije jednaka vrijednosti tbl_b.x

Rješenje:

SELECT * FROM tbl_a WHERE x NOT IN (SELECT x FROM tbl_b)

Međutim što ako nam treba više od jednog podatka podudaranja:

Problem: Selektirati iz tablice tbl_a sve gdje vrijednost tbl_a.x nije jednaka vrijednosti tbl_b.x, vrijednost tbl_a.y nije jednaka vrijednosti tbl_b.y itd.

Rješenje:

SELECT * FROM tbl_a WHERE NOT EXISTS (SELECT * FROM tbl_b WHERE tbl_a.x=tbl_b.x AND tbl_a.y=tbl_b.y itd.)

Feb 12 2014

MySQL – UPDATE INNER JOIN

Problem:

Updejtati polje X tablice A vrijednošću polja Y tablice B tamo gdje je podatak W tablice A jednak podatku Z tablice B

Rješenje:

UPDATE tbl_A INNER JOIN tbl_B ON tbl_A.x = tbl_B.y SET tbl_A.w = tbl_B.z

MSSQL verzija: MSSQL: Update INNER JOIN