/ 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
sortering efter liste?
Fra : Ryan Dahl


Dato : 08-06-05 14:24

Hej,

hvis man har en simpel tabel med to felter:
1. felt: AutID (autonummerering + primær nøgle)
2. felt: Name (varchar)

....og man gerne vil udtrække udvalgte poster i samme rækkefølge som
angivet - hvordan gør man så?

Eksempelvis bruges som udgangspunkt følgende forespørgsel:
SELECT AutID, Name FROM Table1 WHERE AutID In (5,3,6)

....men hvordan får jeg posterne i rækkefølgen: 5,3,6?!?

På forhånd tak

/Ryan

 
 
///M (08-06-2005)
Kommentar
Fra : ///M


Dato : 08-06-05 14:53

"Ryan Dahl" <junk_this_way@hotmail.com> wrote in message
news:hlrda1di8jjbv59jsch10a02t48c5u5s0t@4ax.com...
> Hej,
>
> hvis man har en simpel tabel med to felter:
> 1. felt: AutID (autonummerering + primær nøgle)
> 2. felt: Name (varchar)
>
> ...og man gerne vil udtrække udvalgte poster i samme rækkefølge som
> angivet - hvordan gør man så?
>
> Eksempelvis bruges som udgangspunkt følgende forespørgsel:
> SELECT AutID, Name FROM Table1 WHERE AutID In (5,3,6)
>
> ...men hvordan får jeg posterne i rækkefølgen: 5,3,6?!?


Et skud i tågen:
SELECT AutID, Name, getdate() as 'tid' FROM Table1 WHERE AutID In (5,3,6)
order by tid




--
///M



Ryan Dahl (08-06-2005)
Kommentar
Fra : Ryan Dahl


Dato : 08-06-05 15:16

On Wed, 8 Jun 2005 15:53:16 +0200, "///M" <nospam@tdcadsl.dk> wrote:

>"Ryan Dahl" <junk_this_way@hotmail.com> wrote in message
>news:hlrda1di8jjbv59jsch10a02t48c5u5s0t@4ax.com...
>> Hej,
>>
>> hvis man har en simpel tabel med to felter:
>> 1. felt: AutID (autonummerering + primær nøgle)
>> 2. felt: Name (varchar)
>>
>> ...og man gerne vil udtrække udvalgte poster i samme rækkefølge som
>> angivet - hvordan gør man så?
>>
>> Eksempelvis bruges som udgangspunkt følgende forespørgsel:
>> SELECT AutID, Name FROM Table1 WHERE AutID In (5,3,6)
>>
>> ...men hvordan får jeg posterne i rækkefølgen: 5,3,6?!?
>
>
>Et skud i tågen:
>SELECT AutID, Name, getdate() as 'tid' FROM Table1 WHERE AutID In (5,3,6)
>order by tid

Nope - desværre. Viser poster i rækkefølgen: 6,5,3 - sjovt nok uanset
om jeg bruger asc eller desc.

/Ryan

NB: Har dog kun testet i MS Access 2003 med time() og now(), men mon
ikke det giver nogenlunde samme resultat som getdate() i sql server?

Peter Brodersen (08-06-2005)
Kommentar
Fra : Peter Brodersen


Dato : 08-06-05 15:13

On Wed, 08 Jun 2005 15:23:44 +0200, Ryan Dahl
<junk_this_way@hotmail.com> wrote:

>SELECT AutID, Name FROM Table1 WHERE AutID In (5,3,6)
>
>...men hvordan får jeg posterne i rækkefølgen: 5,3,6?!?

Hvilken database bruger du?

Med MySQL kan du med lidt kreativitet bruge FIELD(), fx:
... ORDER BY FIELD(AutID,5,3,6)

Alternativt kan du brug eFIND_IN_SET(), fx:
... ORDER BY FIND_IN_SET(AutID,"5,3,6")

Jeg kan dog ikke finde FIELD eller FIND_IN_SET i SQL92-standarden.

MySQL-dokumentation for hhv. FIELD() og FIND_IN_SET():
http://dev.mysql.com/doc/mysql/en/string-functions.html#id2629637
http://dev.mysql.com/doc/mysql/en/string-functions.html#id2629750

Man kan sikkert også lave andre kreative løsninger med control
flow-funktioner.

--
- Peter Brodersen

Ryan Dahl (08-06-2005)
Kommentar
Fra : Ryan Dahl


Dato : 08-06-05 15:27

On Wed, 08 Jun 2005 16:13:26 +0200, Peter Brodersen
<usenet2005@ter.dk> wrote:


>Hvilken database bruger du?

MS SQL Server 2000 til produktionsmiljø.

>
>Med MySQL kan du med lidt kreativitet bruge FIELD(), fx:
>.. ORDER BY FIELD(AutID,5,3,6)
>
>Alternativt kan du brug eFIND_IN_SET(), fx:
>.. ORDER BY FIND_IN_SET(AutID,"5,3,6")
>
>Jeg kan dog ikke finde FIELD eller FIND_IN_SET i SQL92-standarden.

Heller ikke her, men mon ikke der er en lignende proprietær funktion i
SQL server - håber jeg! I det mindste har jeg noget at søge efter med
google nu.

/Ryan



Peter Brodersen (08-06-2005)
Kommentar
Fra : Peter Brodersen


Dato : 08-06-05 15:38

On Wed, 08 Jun 2005 16:27:19 +0200, Ryan Dahl
<junk_this_way@hotmail.com> wrote:

>>Jeg kan dog ikke finde FIELD eller FIND_IN_SET i SQL92-standarden.
>Heller ikke her, men mon ikke der er en lignende proprietær funktion i
>SQL server - håber jeg! I det mindste har jeg noget at søge efter med
>google nu.

Om ikke andet kan du jo måske manuelt sammenstykke et felt at sortere
efter vha. CASE, fx:

CASE sorteringsfelt
WHEN 5 THEN 1
WHEN 3 THEN 2
WHEN 6 THEN 3
ELSE 255
END

Det kan selvfølgelig virke lidt klodset, men hvis du bare vil have
noget hurtigt op at køre, så var det en mulighed.

--
- Peter Brodersen

Ryan Dahl (08-06-2005)
Kommentar
Fra : Ryan Dahl


Dato : 08-06-05 15:47

On Wed, 08 Jun 2005 16:38:05 +0200, Peter Brodersen
<usenet2005@ter.dk> wrote:

>Om ikke andet kan du jo måske manuelt sammenstykke et felt at sortere
>efter vha. CASE, fx:
>
>CASE sorteringsfelt
>WHEN 5 THEN 1
>WHEN 3 THEN 2
>WHEN 6 THEN 3
>ELSE 255
>END
>
>Det kan selvfølgelig virke lidt klodset, men hvis du bare vil have
>noget hurtigt op at køre, så var det en mulighed.

Det er ihvertfald bedre end ingenting!
Tak for det.

/Ryan

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

Månedens bedste
Årets bedste
Sidste års bedste