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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Seneste versionering
Fra : Torben


Dato : 08-09-09 04:17

Hej
Jeg har php og mysql til rådighed. Opgaven er at hente 5 seneste noter
i seneste version.

Min tabel ser sådan her ud:
-------------------------------------
TABEL hp_note_version:
id int(11)
noteID int(11)
date timestamp CURRENT_TIMESTAMP
overskrift varchar(100)
tekst varchar(255)

Min forespørgsel kunne se sådan her ud:
-------------------------------------
SELECT DISTINCT id,
noteID,
overskrift
FROM hp_note_version
ORDER BY date desc
LIMIT 5

Men det virker ikke helt. Hvordan gør jeg?

 
 
Martin (08-09-2009)
Kommentar
Fra : Martin


Dato : 08-09-09 11:55

Torben wrote:
> Hej
> Jeg har php og mysql til rådighed. Opgaven er at hente 5 seneste noter
> i seneste version.
>
> Min tabel ser sådan her ud:
> -------------------------------------
> TABEL hp_note_version:
> id int(11)

Er dette primary key?
Er der auto increment på den?

> noteID int(11)

Hvor kommer denne fyr fra?

> date timestamp CURRENT_TIMESTAMP
> overskrift varchar(100)
> tekst varchar(255)
>
> Min forespørgsel kunne se sådan her ud:
> -------------------------------------
> SELECT DISTINCT id,

Ingen grund til at vælge distinct hvis det er auto increment og primary key.

DISTINCT betyder at den kun skal vælge éen række hvis der er flere med
samme id

> noteID,
> overskrift
> FROM hp_note_version
> ORDER BY date desc

Jeg kan aldrig huske hvornår man skal bruge ASC/DESC - måske det er fejlen?

> LIMIT 5
>
> Men det virker ikke helt. Hvordan gør jeg?

Der er 1 ting jeg kan se, så hut jeg visker så er date et reserved
keyword, så kan du
1: Lave den om til fx. date_added
2: Sætte ` (plinger?) rundt om altså
ORDER BY `date` DESC
og det samme hvis du skal selecte date feltet også
SELECT `date`, noteID...

Jeg ville nok fortrække at bruge #1 - ellers så glemmer man sikkert
plingerne på et andet tidspunkt, hvis man ikke konskvent bruger plinger
alle steder :)

Torben (08-09-2009)
Kommentar
Fra : Torben


Dato : 08-09-09 05:13

On 8 Sep., 12:55, Martin <ma...@SPAMscandesigns.dk> wrote:

> > id int(11)
>
> Er dette primary key?
> Er der auto increment på den?

Ja, lige netop

> > noteID int(11)
> Hvor kommer denne fyr fra?

noteID er en parenttabel som ikke indeholder data jeg skal bruge i
denne sammenhæng. Altså:

hp_note
id
-> hp_note_version
noteID

hvis du forstår hvad jeg mener...

> Ingen grund til at vælge distinct hvis det er auto increment og primary key.
>
> DISTINCT betyder at den kun skal vælge éen række hvis der er flere med
> samme id

Pointen er at finde sidste version. Hvor jeg benytte 'date'. Der er
altid en eller flere records med samme noteID.


> Jeg kan aldrig huske hvornår man skal bruge ASC/DESC - måske det er fejlen?

ASC/DESC har jeg styr på. DESC begynder ved seneste versionering.

> Der er 1 ting jeg kan se, så hut jeg visker så er date et reserved
> keyword, så kan du
> 1: Lave den om til fx. date_added
> 2: Sætte ` (plinger?) rundt om altså
> ORDER BY `date` DESC
> og det samme hvis du skal selecte date feltet også
> SELECT `date`, noteID...
>
> Jeg ville nok fortrække at bruge #1 - ellers så glemmer man sikkert
> plingerne på et andet tidspunkt, hvis man ikke konskvent bruger plinger
> alle steder :)

Jeg får ikke syntaksfejl, men jeg tjekker lige for en sikkerheds
skyld. Og vender tilbage.

Torben (08-09-2009)
Kommentar
Fra : Torben


Dato : 08-09-09 05:26

On 8 Sep., 12:55, Martin <ma...@SPAMscandesigns.dk> wrote:

date er ikke problemet

Mads Lie Jensen (08-09-2009)
Kommentar
Fra : Mads Lie Jensen


Dato : 08-09-09 12:55

On Tue, 8 Sep 2009 03:16:54 -0700 (PDT), Torben <ringsoe@gmail.com>
wrote:

>
>Men det virker ikke helt. Hvordan gør jeg?

Hvordan "virker ikke"?
Hvad sker der og hvad forventer du der skal ske?
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - http://www.gartneriet.dk/

Torben (08-09-2009)
Kommentar
Fra : Torben


Dato : 08-09-09 06:01

Et tænkt eksempel kunne se ud på denne måde:

id noteID date overskrift tekst
11 11 2009-09-07 16:24:38 ovskr_1 Tekst a etc.
12 12 2009-09-07 16:25:08 ovskr_2 Tekst b etc.
13 12 2009-09-07 16:25:12 ovskr_3 Tekst c etc.
14 13 2009-09-07 16:34:10 ovskr_4 Tekst d etc.
15 13 2009-09-07 16:34:17 ovskr_4 Tekst e etc.
16 13 2009-09-07 16:34:23 ovskr_5 Tekst f etc.
17 13 2009-09-07 16:35:31 ovskr_6 Tekst g etc.

er udgangspunktet.

foresrpørgslen skulle gerne resultere i disse:
--------------------------------------
id noteID date overskrift tekst
11 11 2009-09-07 16:24:38 ovskr_1 Tekst a etc.
13 12 2009-09-07 16:25:12 ovskr_3 Tekst c etc.
17 13 2009-09-07 16:35:31 ovskr_6 Tekst g etc.

Torben (08-09-2009)
Kommentar
Fra : Torben


Dato : 08-09-09 06:11

On 8 Sep., 13:55, Mads Lie Jensen <m...@gartneriet.dk> wrote:
> On Tue, 8 Sep 2009 03:16:54 -0700 (PDT), Torben <ring...@gmail.com>
> wrote:
>
>
>
> >Men det virker ikke helt. Hvordan gør jeg?
>
> Hvordan "virker ikke"?
> Hvad sker der og hvad forventer du der skal ske?

Se evt. seneste posting. Fejlen er at der kommer flere række med samme
NoteID med og det er galt.

Martin (08-09-2009)
Kommentar
Fra : Martin


Dato : 08-09-09 13:28

Torben wrote:
> On 8 Sep., 13:55, Mads Lie Jensen <m...@gartneriet.dk> wrote:
>> On Tue, 8 Sep 2009 03:16:54 -0700 (PDT), Torben <ring...@gmail.com>
>> wrote:
>>
>>
>>
>>> Men det virker ikke helt. Hvordan gør jeg?
>> Hvordan "virker ikke"?
>> Hvad sker der og hvad forventer du der skal ske?
>
> Se evt. seneste posting. Fejlen er at der kommer flere række med samme
> NoteID med og det er galt.

så prøv
SELECT DISTINCT NoteID, id ...

N/A (08-09-2009)
Kommentar
Fra : N/A


Dato : 08-09-09 13:28



Torben (08-09-2009)
Kommentar
Fra : Torben


Dato : 08-09-09 06:50

Hej venner:

Løsningen er tilsyneladende:

SELECT hp_note_version.*
FROM hp_note_version
INNER JOIN ( SELECT MAX( id ) AS id
FROM hp_note_version
GROUP BY noteID ) maxIDs
ON hp_note_version.id = maxIDs.id
ORDER BY date DESC

Ellers tak for forsøget

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste