|
| 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
| |
|
|