/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
MySQL Hjælp igen (lidt mere avanceret)
Fra : Michael Jensen


Dato : 23-02-01 12:15

Hejsa

Jeg har nu fået bikset en god SQL sammen som faktisk kun mangler en ting
mere, men jeg ved ikke helt om MySQL kan gøre dette.
Jeg har nu :
SELECT
priv_msgs.msg_id AS 'ID',
FromUser.uname AS 'Fra',
ToUser.uname AS 'Til',
ToUser.email AS 'Email',
UsersStats.logintime AS 'Last Login', //Her kniber det
priv_msgs.subject AS 'Emne',
priv_msgs.msg_time AS 'Tid'
FROM
priv_msgs
INNER JOIN
users AS FromUser ON FromUser.uid = priv_msgs.from_userid
INNER JOIN
users AS ToUser ON ToUser.uid = priv_msgs.to_userid
INNER JOIN //her kniber det også
users_stats AS UsersStats ON UsersStats.uname = ToUser.uname
//sammen med denne
WHERE
priv_msgs.read_msg='0'
AND
priv_msgs.msg_time<'2001-02-15'
ORDER BY
priv_msgs.msg_time"

Nu vil jeg så gerne finde ud af hvornår sidste gang UserTo.uname loggede
ind. Til det har jeg en tabel users_stats. Her bliver hvert login logget og
derfor kan uname optræde flere gange. Dvs. jeg skal have fat i det sidste
login. Det kunne jo gøres med et subselecet men det understøtter mysql da
ikk' endnu, vel ???

Hvis man fjerner de linier hvor "det kniber" kører den perfekt igennem,
bortset fra at jeg så ikke har det sidste login med

Er der en anden måde jeg kan få fat i den sidste værdi?

Hilsen Michael



 
 
Allan Andersen (23-02-2001)
Kommentar
Fra : Allan Andersen


Dato : 23-02-01 12:44

Hej Michael

Rart at se at mit forslag er blevet mere advanceret.

Jeg kender som sgat ikke MySql endnu og ved ikke om jeg vil bruge den. Men
prøv nedenstående - det vil virke i MS Sql Server: Mine tilføjelser er
markeret med -- KIG HER --.

Håber at det virker.

Venligst

Allan Andersen


SELECT
priv_msgs.msg_id AS 'ID',
FromUser.uname AS 'Fra',
ToUser.uname AS 'Til',
ToUser.email AS 'Email',

-- KIG HER --
LastUserStats.logintime AS 'Last Login',
-- KIG HER --

priv_msgs.subject AS 'Emne',
priv_msgs.msg_time AS 'Tid'
FROM
priv_msgs
INNER JOIN
users AS FromUser ON FromUser.uid = priv_msgs.from_userid
INNER JOIN
users AS ToUser ON ToUser.uid = priv_msgs.to_userid
INNER JOIN

-- KIG HER --

(SELECT uname, max(logintime) AS logintime
FROM UsersStats
GROUP BY uname) AS LastUserStats ON LastUserStats.uname = ToUser.uname


-- KIG HER --

WHERE
priv_msgs.read_msg='0'
AND
priv_msgs.msg_time<'2001-02-15'
ORDER BY
priv_msgs.msg_time"



Michael Jensen (23-02-2001)
Kommentar
Fra : Michael Jensen


Dato : 23-02-01 13:04


"Allan Andersen" <aa@midas.com> skrev i en meddelelse
news:3a964cf5$0$25921$4d4eb98e@news.dk.uu.net...
> Hej Michael
>
> Rart at se at mit forslag er blevet mere advanceret.

Det var næsten en hel revoulution ikk'

> Jeg kender som sgat ikke MySql endnu og ved ikke om jeg vil bruge den. Men
> prøv nedenstående - det vil virke i MS Sql Server: Mine tilføjelser er
> markeret med -- KIG HER --.

Det var også noget i den stil jeg ville gøre men MySQL understøtter ikke
subselects selvom det nu ville være dejligt i denne situation. Hvis din
database hjerne kan komme med en workaround er du meget velkommen, men hvis
plejer at lege med MSSQL og bruger subselects er det jo nok ikke noget du
plejer at tænke over

Hilsen Michael



Allan Andersen (23-02-2001)
Kommentar
Fra : Allan Andersen


Dato : 23-02-01 13:18

Hej Michael

> Det var også noget i den stil jeg ville gøre men MySQL understøtter ikke
> subselects selvom det nu ville være dejligt i denne situation. Hvis din
> database hjerne kan komme med en workaround er du meget velkommen, men
hvis
> plejer at lege med MSSQL og bruger subselects er det jo nok ikke noget du
> plejer at tænke over

Hmm, jeg kan nu noget mere end databaser

Et forslag. Del dit problem op i små bider. Først eksekvere du dit SQL som
henter From- og To users mm. uden last login time. Dit resultat sæt
traveserer du så igennem indtil EOF. Inde i din løkke har du så en funktion
som elsekverer det SQL som finder last login time (funktionen returnerer
last login time). Nu formaterer du så dit HTML mm. eller hvad du skal. Læs
næste række fra resultat sættet.

Venligst

Allan Andersen



Michael Jensen (23-02-2001)
Kommentar
Fra : Michael Jensen


Dato : 23-02-01 13:44


"Allan Andersen" <aa@midas.com> skrev i en meddelelse
news:3a9654e7$0$25921$4d4eb98e@news.dk.uu.net...
> Hej Michael
>
> > Det var også noget i den stil jeg ville gøre men MySQL understøtter ikke
> > subselects selvom det nu ville være dejligt i denne situation. Hvis din
> > database hjerne kan komme med en workaround er du meget velkommen, men
> hvis
> > plejer at lege med MSSQL og bruger subselects er det jo nok ikke noget
du
> > plejer at tænke over
>
> Hmm, jeg kan nu noget mere end databaser
>
> Et forslag. Del dit problem op i små bider. Først eksekvere du dit SQL som
> henter From- og To users mm. uden last login time. Dit resultat sæt
> traveserer du så igennem indtil EOF. Inde i din løkke har du så en
funktion
> som elsekverer det SQL som finder last login time (funktionen returnerer
> last login time). Nu formaterer du så dit HTML mm. eller hvad du skal. Læs
> næste række fra resultat sættet.

Det var selvfølgelig en mulighed som burde være til at finde ud af.

Tak for hjælpen

Hilsen Michael



Søg
Reklame
Statistik
Spørgsmål : 177523
Tips : 31968
Nyheder : 719565
Indlæg : 6408677
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste