Avatar billede euroman28 Nybegynder
07. august 2001 - 00:01 Der er 18 kommentarer og
2 løsninger

SQL-statement.

Det jeg skal bruge er en bestemt sorteringsrækkefølge af et recordset i en accessdatabase.

Som eks. har jeg en grillbar.
Jeg vil godt have prislisten sortere efter type med pizzaer først og salat til sidst.

TEKST      TYPE      NR
Magarita    Pizza      20
Calzone    Pizza      21
Vulcano    Pizza      22
Pommes Frit Grill      01
Big Burger  Grill      03
Mixed      Salat      30
Rejer      Salat      31

Hvordan gør jeg det ?
Avatar billede erikjacobsen Ekspert
07. august 2001 - 00:05 #1
Du laver en tabel, tabel1, der angiver rækkefølgen:

  type1 nr1
  Pizza  1
  Grill    2
  Salat  3

og så

  select .... from prisliste,tabel1 where prisliste.type=tabel1.type1 order by tabel1.nr1
Avatar billede euroman28 Nybegynder
07. august 2001 - 00:07 #2
Den er jeg med på, men jeg har ikke lov til at oprette en ny tabel, så det skal ligge i SQL-statementet.
Avatar billede erikjacobsen Ekspert
07. august 2001 - 00:09 #3
Er du helt sikker på der kun er de tre kategorier? Og hvilken konkret DB bruger du?
Avatar billede euroman28 Nybegynder
07. august 2001 - 00:10 #4
Jeg bruger Access2000..og der er ca 10 forskellige kategorier.
Avatar billede erikjacobsen Ekspert
07. august 2001 - 00:12 #5
Ok, så smutter jeg igen - jeg kunne i princippet gøre det med MySql i
SQL-sætningen (men det ville bestemt ikke se kønt ud). Prøv om du ikke
kan få oprettet en sorteringstabel - alt andet er tosset.

Ellers kan du jo i PHP/ASP/osv sortere efter du har trukket de linier ud
Avatar billede euroman28 Nybegynder
07. august 2001 - 00:14 #6
øv..hvilken kommando ville du bruge i mysql ?
10 x UNION ?
Jeg har også tænkt på at sortere efter udtrækket...men nu er jeg opsat på at finde en SQL-måde at gøre det på.
Tror du ikke det kan lade sig gøre ?
Avatar billede erikjacobsen Ekspert
07. august 2001 - 00:16 #7
nej, med if-sætninger ville jeg lave et midlertidigt felt (\"oversætte\" Pizza til 1 - osv)
og så sortere på dette felt.
Avatar billede euroman28 Nybegynder
07. august 2001 - 00:18 #8
Kan man også det i Access ?

Jeg lægger en nr. 22 oven i pointene for den rigtige løsning :)
Avatar billede erikjacobsen Ekspert
07. august 2001 - 00:20 #9
Jeg kender ikke noget til SQL-en for Access (kæmper faktisk med den for
tiden i et projekt - ikke af eget valg)

Du kan evt. vente til der kommer én der ved noget
Avatar billede tmceu Praktikant
07. august 2001 - 00:36 #10
Uanset om du bruger SQL eller sorterer efterfølgende, hvad er så dit kriterie for sorteringen ?

Så vidt jeg kan se bliver det et problem at få dem sorteret som Pizza -> Salat, da det jo hverken kan gøres alfabetisk eller efter nummer ?

Har du adgang til at lave et nyt felt i databasen, så kunne du oprette et sorteringsfelt og så bruge det i SQL\'s ORDER BY, eks. SELECT * FROM [tabel] ORDER BY [sort_felt]
Avatar billede tmceu Praktikant
07. august 2001 - 00:37 #11
jeg mener selvfølgelig, Har du adgang til at lave et nyt felt i TABELLEN, så kunne du oprette et sorteringsfelt og så bruge det i SQL\'s ORDER BY, eks. SELECT * FROM [tabel] ORDER BY [sort_felt]
Avatar billede euroman28 Nybegynder
07. august 2001 - 00:45 #12
Jeg vil ikke oprette et nyt felt.
jeg er lidt inde på noget med..

SELECT * FROM MADLISTE
WHERE TYPE=\'Pizza\'
UNION
SELECT * FROM MADLISTE
WHERE TYPE=\'Grill\'
UNION
SELECT * FROM MADLISTE
WHERE TYPE=\'Salat\'

Jeg er spændt på hvordan sorteringsrækkefølgen bliver...det vil kigge på det senere.
Avatar billede tmceu Praktikant
07. august 2001 - 00:53 #13
Dette vil efter min mening ikke lave en korrekt sortering, men som du selv siger - prøv dig frem.
Avatar billede proaccess Nybegynder
07. august 2001 - 07:22 #14
Du kan bruge nedenstående model...

MEN den bliver hurtigt uoverskuelig, når du når op på 20 forskellige kategorier...

SELECT Tekst, Type, Nr FROM Grill ORDER BY IIf([Type]=\'Salat\',1,IIf([Type]=\'Grill\',2,IIf([Type]=\'Pizza\',3,4))), Nr;
Avatar billede proaccess Nybegynder
07. august 2001 - 07:23 #15
UPS.. Pizza først !!!

SELECT Tekst, Type, Nr FROM Grill ORDER BY IIf([Type]=\'Pizza\',1,IIf([Type]=\'Grill\',2,IIf([Type]=\'Salat\',3,4))), Nr;
Avatar billede euroman28 Nybegynder
07. august 2001 - 09:42 #16
Nu begynder det at gå den rigtige vej...det må jeg prøve når jeg kommer hjem.
Avatar billede proaccess Nybegynder
07. august 2001 - 09:57 #17
Du skal \"bare\" udbygge IIf-strukturen til at indeholde alle 20 grupper... Men det vil altså være bedre, hvis du havde mulighed for at have en ekstra tabel med sorteringsrækkefølgen...

Hvis du kan tilgå databasen med SQL, så kunne du prøve med følgende:

1)  CREATE TABLE Grupper (Gruppe TEXT CONSTRAINT Gruppe PRIMARY KEY, Sort SHORT);
2)  INSERT INTO Grupper (Gruppe, Sort) SELECT \'Pizza\', 1;
3)  INSERT INTO Grupper (Gruppe, Sort) SELECT \'Grill\', 2;
4)  INSERT INTO Grupper (Gruppe, Sort) SELECT \'Salat\', 3;
osv...

Så kan du derefter lave din forespørgsel således:
SELECT * FROM Grill INNER JOIN Grupper ON Grill.Type = Grupper.Gruppe ORDER BY Grupper.Sort, Grill.ID;
Avatar billede euroman28 Nybegynder
07. august 2001 - 18:50 #18
Mange tak for hjælpen. Men som sagt så vil jeg ikke oprette et nyt felt.

Jeg løste problemet på følgende simple måde:
SELECT * FROM MADLISTE
ORDER BY TYPE=\'Pizza\', TYPE=\'Grill\', TYPE=\'Salat\'
Avatar billede euroman28 Nybegynder
07. august 2001 - 18:52 #19
Den IIf kendte jeg ikke..den får jeg nok brug for en anden gang så proaccess får lige lidt point.

Pizzaen den æder jeg sgu\' selv. :)
Avatar billede euroman28 Nybegynder
08. august 2001 - 21:26 #20
Proaccess > måske du kan tjene et par points på denne http://www.eksperten.dk/spm/96488 ... den er sgu\' for svær til mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester