Gå til innhold

Anbefalte innlegg

Skrevet

Hei skulle hatt litt hjelp her...

 

Har en tabell der noe er sortert i mengde etter max til min...

Det som er problemet er at jeg skulle ha fått henta ut de 10 øverste i denne tabellen vha en SQL spørring.

 

Er det noen som vet hvordan jeg kan løse dette på en enklel måte? Ev hvilken metode som kan brukes til dette.

 

(bruker Oracle 7)

 

/steinih :smile:

Videoannonse
Annonse
Skrevet

Kan jo legge ved litt mere informasjon da:

 

SQL spørringa jeg bruker for å få det sortert etter mengde er følgende:

 

select vinbestilling.vinid,sum(vinbestilling.antall)as ANTALL_KASSER

from vinbestilling,vinregister

group by vinbestilling.vinid

order by ANTALL_KASSER desc

 

Det er altså et bestillingssystem for vinder det dreier seg om.

 

Etter spøringa over før jeg lista ut følgende:

 

VINID ANTALL_KAS

------ ----------

122 1350

82 810

121 720

61 90

101 45

 

Og det som da er problemer er hvordan skal jeg klare å hente ut bare de 10 øverste i tabbellen? DVS etter jeg har lagt inn flere viner da...

 

det hadde vert fint om noen kunne hjelpe meg med hvordan jeg skal løse dette ev. hvilken funksjon jeg kan bruke.

 

/steinih :smile:

Skrevet

select vinbestilling.vinid,sum(vinbestilling.antall)as ANTALL_KASSER

from vinbestilling,vinregister

group by vinbestilling.vinid

order by ANTALL_KASSER desc limit 10;

 

Værsågod! :smile:

Skrevet

På mysql.org stod det at LIMIT var ein MySQL-spesifikk kommando. I Oracle ser det ut til at du må bruke 'rownum', altså noko slikt som dette:

 

SELECT TITLE FROM BOOK WHERE ROWNUM <= 5 ORDER BY TITLE DESC

Skrevet

For det første ser kodebiten slik ut.

 

 

select vinid,sum(antall)as ANTALL_KASSER

from vinbestilling

group by vinbestilling.vinid

order by ANTALL_KASSER desc;

 

Og for det andre bruker vi oracle7 og da funker ikke limit. Jeg har prøvd og lage et view jeg kan hente de 10 øverste fra og jeg har prøvd med subqueries, men er ****meg ingenting som funker, og jeg tror det er oracle7 sin feil :smile:

Skrevet

Det har jo ikke noe å si i den sammenhengen da Trygberd! Og vet at koden ser slik ut:

 

select vinid,sum(antall)as ANTALL_KASSER

from vinbestilling

group by vinid

order by ANTALL_KASSER desc

 

/steinih

Skrevet

En som har drevet litt med databaser vet jo selvsagt at limit funker bl.a i mysq.......

 

Itj sannt stein ivar?

 

 

:smile:

 

 

-Trygve

 

[ Denne Melding var redigert av: trygberd på 2002-04-24 16:28 ]

Skrevet

ROWNUM < 11 ville ha funka hvis vi henta det fra en spesifik tabell, men poenget her er at alt dette skulle ha blitt gjort i en spørring slik at vi ikke må "mellomlagre" det i en ny tabell.

 

Flere tips?

 

/steinih

Skrevet

Får ikke til å bruke ROWNUM etter at tabellen er sortert etter solgtmengde..

Får bare til å bruke det før sorteringen og da er jo noe av poenget borte siden du da bare vil få med de 10 på topp før det er sortert. Dette vil da medføre at det ikke vil være de 10 mest solgte vinene som er i lista...

 

/steinih

Skrevet

Har faktisk klart å fixe det :smile:

 

Etter mye om og men fant vi ut at vi skulle bruke VIEW...

 

Nå mangler vi bare å få med vinnavnene i den endelige topp 10 lista...

 

Hadde en idé, men det ble vist litt feil... Endte opp med at den lista opp alle vinene på hver vinid...Noe somegentlig ikke skal være mulig da men...

 

Får prøve videre...

 

/steinih

Skrevet

Har du prøvd med følgende :

 

 

select top 10 vinbestilling.vinid osv.

 

Er ikke sikker på at top er mulig i Oracle :smile:

 

 

 

Yoda

Skrevet

Tror nok ikke det er mulig nei, men har fått fixa det nå...

 

Takker alle for gode forslag :smile: :smile: :smile:

 

/steinih

  • 3 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...