SQL veliki problem

Pozdrav svima,

imam jedan malo poveci problem koji pokusavam rjesiti vec 2 dana, ali bez uspjesno. Pa bi molio sve SQL guru-e da pomognu :slight_smile:

Radi se o sljedecem;

Platforma je MySQL,

Radim jednu aplikaciju (php, ajax, mysql) i sad je poanta da u backgroundu aplikacija provjerava dali je korisnik logiran na stranici (online) i radi insert svakih 5 sekundi u bazu.

Tablica se sastoji od sljedece strukture;

CREATE TABLE `StatisticsOnlineUsers` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `UID` varchar(10) NOT NULL,
  `Type` varchar(15) NOT NULL,
  `SSID` varchar(100) NOT NULL,
  `IP` varchar(15) NOT NULL,
  `DateTime` datetime NOT NULL,
  PRIMARY KEY (`id`,`SSID`,`DateTime`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

Problem je sljedeci;

Trebao bih dobiti sve SSID-oveo i pocetno vrijeme logiranja, odnosno 1. zapis od pojedinog SSID-a sto je vrlo jednostavno i radi:

SELECT
StatisticsOnlineUsers.id,
StatisticsOnlineUsers.UID,
StatisticsOnlineUsers.Type,
StatisticsOnlineUsers.SSID,
StatisticsOnlineUsers.IP,
StatisticsOnlineUsers.DateTime
FROM
StatisticsOnlineUsers
group by StatisticsOnlineUsers.SSID
order by StatisticsOnlineUsers.DateTime ASC

No problem je u tome sto na iti jedan nacin nemogu dobit trenutni zadnji DateTime od pojedinog SSID-a.

Teoretski bi to trebalo raditi da zamjenim ovu zadnju liniju query-a i umjesto ASC stavim DESC … ili order by max(StatisticsOnlineUsers.DateTime) no niti jedino od rjesenja neradi. Pokusao sam i sa raznim innerjoinanjem view-ova napravljenih od ove tablice … no neradi.

Poanta je u svemu da bih trebao dobiti od pojedinog SSID-a pocetno vrijeme logiranja i trenutno zadnje vrijeme logiranja. Ali naravno u tablici kao rezultat svih SSID-ove … ne jednog … jer bi onda mogao to rjesiti pomocu where … = SSID

Unaprijed hvala na odgovorima.

SELECT
StatisticsOnlineUsers.id,
StatisticsOnlineUsers.UID,
StatisticsOnlineUsers.Type,
StatisticsOnlineUsers.SSID,
StatisticsOnlineUsers.IP,
MAX(StatisticsOnlineUsers.DateTime)
FROM
StatisticsOnlineUsers 
GROUP BY StatisticsOnlineUsers.SSID
ORDER BY StatisticsOnlineUsers.DateTime desc

ovo 100 % radi.
date time polje mora sadržavati i datum i vrijeme.
npr: 2010-06-21 21:00:00

Malo aliasa bi ti dobro došlo :slight_smile: (Ime tablice)

Lola, ako se ikad nadjes u Varazdinu, javi se :slight_smile: Imas chevape i pivo. Puno Hvala

Jos jedno kratko pitanje;

imam

SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-28 23:50:22')

odnosno funckija mi vraca razliku izmedju datuma, ali nazalost samo u broju dana. Postoji li mogucnost da vraca u formatu xx sati, xx minuta, xx sekunda ?

Puno Hvala

rjeseno!

[quote=“havoc”]Jos jedno kratko pitanje;

imam

SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-28 23:50:22')

odnosno funckija mi vraca razliku izmedju datuma, ali nazalost samo u broju dana. Postoji li mogucnost da vraca u formatu xx sati, xx minuta, xx sekunda ?

Puno Hvala[/quote]

ima opcija koliko hočeš i za vrijeme i datum.
pretvorba, izvačenje, rednog broja dana u godini, tjedna, mjeseca itd…


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja