Gå til innhold

Anbefalte innlegg

Har en skoleinnlevering hvor eg nå sitter helt fast på siste oppgaven.

 

Den lyder slik: "Du skal finne alle løpere som har deltatt på alle løp i 2006".

 

De 4 tabellene jeg har er: DELTAGER, KLUBB, LOP, RESULTAT.

 

Variablene i tabellene:

LOP : NR, ARRANGORKLUBB, TID og STED.

KLUBB : NAVN, KONTAKTPERSON, EPOST

DELTAGER: ID, NAVN, KLUBB, KJONN, KLASSE

RESULTAT : LOPERID, LOPNR, MINUTT, SEKUND

 

 

Prøvde slik:

 

Select Navn

from DELTAGER, LOP, RESULTAT

where Lopnr=Nr AND LoperId=Id AND Dato like '___6______'; //formatet på datoen er 2006-10-10

 

Fikk da ut alle som hadde deltatt i minst et løp. De som hadde deltatt i flere løp kom flere ganger.

Prøvde med distinct, og da kom alle en gang, men jeg skal kun ha de som var med i alle løp.

Noen gode forslag?

Endret av Skitta
Lenke til kommentar
Videoannonse
Annonse

Opptil flere. For det første: Lær deg å bruke join operator i steden for å bruke den utdaterte måten du benytter. Et eksempel:

 

from tabell1 a inner join tabell2 b on (a.id = b.id)

 

Videre så kan det være en idé å se på aggregeringer, hvilke(n) du kan bruke burde være greit for deg å finne ut selv.

Lenke til kommentar
Opptil flere. For det første: Lær deg å bruke join operator i steden for å bruke den utdaterte måten du benytter. Et eksempel:

 

from tabell1 a inner join tabell2 b on (a.id = b.id)

 

Videre så kan det være en idé å se på aggregeringer, hvilke(n) du kan bruke burde være greit for deg å finne ut selv.

 

Du har ikke et forslag til hva eg kan skrive da? Utifra de opplysningene eg har gitt...

Lenke til kommentar
Hallo? Skal du ikke lære noe også? Jeg har gitt deg en pekepinn om hva du skal se på, det minste jeg forlanger er at du gidder å prøve selv. Når du så har faktisk har forsøkt og evt ikke fått det til kan jeg/vi gi flere hint.

 

 

Poenget er jo at jeg ikke har hatt om aggregeringer enda. Og lærer denne "gamle" metoden som jeg skriver no. Så skjønner ikke helt ka du mener jeg skal gjøre.

Lenke til kommentar
I tillegg var vel denne ganske grisestygg: AND Dato like '___6______'

 

Bruk heller datepart: AND DATEPART(yy,Dato) = 2006

 

 

Fikk det til slutt til. Slik ble koden:

 

Select Navn

from DELTAGER

where(select count( Navn )

from RESULTAT,LOP

where id=loperid and nr=lopnr and dato like '2006______') >= ALL

(select count( nr )

from LOP

where dato like '2006______');

 

Skal teste og se om det du sa ang. datepart virker også.

Om folk har forslag til en bedre kode så er det bare å komme med den..

Endret av Skitta
Lenke til kommentar
Poenget er jo at jeg ikke har hatt om aggregeringer enda. Og lærer denne "gamle" metoden som jeg skriver no. Så skjønner ikke helt ka du mener jeg skal gjøre.

Hvis du lærer det, så krev pengene tilbake. Du bør kunne forlange at lærerne dine kan det de holder på med.

 

Ang aggregeringer så burde denne siden være dekkende: MySQL Group By Functions. Du er sikker på at du aldri har vært borti max(), min() og så videre?

Lenke til kommentar
Poenget er jo at jeg ikke har hatt om aggregeringer enda. Og lærer denne "gamle" metoden som jeg skriver no. Så skjønner ikke helt ka du mener jeg skal gjøre.

Hvis du lærer det, så krev pengene tilbake. Du bør kunne forlange at lærerne dine kan det de holder på med.

 

Ang aggregeringer så burde denne siden være dekkende: MySQL Group By Functions. Du er sikker på at du aldri har vært borti max(), min() og så videre?

 

Dette er jo bare en liten del av pensum i Databaser 1. Som vi nå har hatt helt på slutten.

Må jo lære grunnleggende ting først..

Lenke til kommentar

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