Gå til innhold

[Løst] sql spørring til database


Anbefalte innlegg

Hei.

 

Jeg har en innlevering i sql databaser og strever med følgende:

 

"Lag en spørring som teller opp antall ønsker for personer med flere enn 7 ønsker. Spørreresultatet skal vise personnr, fornavn og etternavn i én kolonne, samt antall ønsker. Sorter utskriften etter fødselsår, de yngste først."

 

Jeg har dette til nå:

---

SELECT concat(p.fornavn, ' ', p.etternavn) AS navn, p.fdato, o.gnr

FROM person AS p, onske AS o
Where p.pnr = o.pnr
ORDER BY `p`.`fdato`  ASC

---

 

post-262770-0-83841700-1442779745.png

 

 

Jeg vil da tro at jeg må bruke count funksjonen til å telle opp antall ønsker flere enn 7.. men jeg vet ikke helt hvordan enda..  Så kan du hjelpe meg :)?

Lenke til kommentar
Videoannonse
Annonse

Du må bruke SUM, ikke COUNT. Ergo

 

SELECT SUM(`gnr`) FROM `person` WHERE `gnr` >= 7

 

Det er vel egentlig ikke godt å si, når vi ikke aner hvordan tabellene ser ut ... men hvis en rad tilsvarer ett ønske så må det nok bli count.

 

Hvis TS gadd fortelle hvilke tabeller han har og hva de inneholder ville svarene sikkert bli litt mer to the point...

  • Liker 1
Lenke til kommentar

Du må bruke SUM, ikke COUNT. Ergo

 

SELECT SUM(`gnr`) FROM `person` WHERE `gnr` >= 7

 

 

 

Du må bruke SUM, ikke COUNT. Ergo

 

SELECT SUM(`gnr`) FROM `person` WHERE `gnr` >= 7

 

Det er vel egentlig ikke godt å si, når vi ikke aner hvordan tabellene ser ut ... men hvis en rad tilsvarer ett ønske så må det nok bli count.

 

Hvis TS gadd fortelle hvilke tabeller han har og hva de inneholder ville svarene sikkert bli litt mer to the point...

 

 

 

Du må vel bruke et Group By statement for å slippe å få duplikate linjer.

 

Takker for hjelpen :) Ja, jeg fikk tips fra læreren også ved å bruke group by istede for order by. Fordi count kan ikke stå sammen med order by?

Da var 8 av 10 oppgaver på oblig'n i boks :p

Endret av Kj3tll
Lenke til kommentar

Count kan fint stå sammen med begge deler. Men Count teller antall elementer som ikke er NULL - bruker du den sammen med order by, så vil du få hvor mange rader som har kolonnen til ikke NULL, sammen med group by, får du hvor mange i gruppen.

 

Hvis jeg forstår oppgaven rett har du 2 tabeller, 1 som inneholder info om en person, og en annen som inneholder ønske (samt hvem som ønsket det).

 

Da ville jeg gått for noe som dette:

 

SELECT concat(p.fornavn, ' ', p.etternavn) AS navn, count(o.gnr) AS antall
FROM person AS p
JOIN onske AS o
ON p.pnr = o.pnr
GROUP BY p.pnr
Det denne spørringe gjør er følgende:

- Joiner tabellene (og sier at p.pnr tilsvarer o.pnr - slik at den forstår hvilke rader som skal knyttes sammen)

- Grupperer så alle basert på personnummer(?)

- teller hvor mange ulike ønsker hver person har (count gir antall elementer i gruppen)

Lenke til kommentar

Jeg strever også på den siste oppgaven i innleveringa.

Jeg skal lage en spørring som viser hvor mange ønskelister hver gave er med på. Samtlige gaver skal med i spørreresultatet, selv om denne gaven ikke er med på noen ønskelister (skal da stå med 0). Sorter utskriften på gavenavn.

Trykk her hvis du vil få en oversikt på hvilke tabeller jeg har med i oppgaven.

 

Som sagt: jeg spør bare for å lære- har sittet å klødd meg i hodet i 2 timer nå.. :p Jeg setter pris på hvilket som helst svar ;) hint eller løsning. Alt hjelper :)

Lenke til kommentar

Tipper du har behov for en LEFT JOIN:

SELECT a.feltA1, a.feltA2, b.feltB1, b.feltB2
FROM tabellA a
LEFT JOIN tabellB b ON b.aID = a.ID
Denne returerer alle rader fra tabell A, og de radene fra tabell B hvor joinen er sann, hvis ikke så får b.feltB1 og b.feltB2 verdien NULL

Ett google image søk på "sql join" gir en haug med bilder som illustrerer dette, f.eks: http://i.imgur.com/hhRDO4d.png

Lenke til kommentar

Tipper du har behov for en LEFT JOIN:

SELECT a.feltA1, a.feltA2, b.feltB1, b.feltB2
FROM tabellA a
LEFT JOIN tabellB b ON b.aID = a.ID
Denne returerer alle rader fra tabell A, og de radene fra tabell B hvor joinen er sann, hvis ikke så får b.feltB1 og b.feltB2 verdien NULL

Ett google image søk på "sql join" gir en haug med bilder som illustrerer dette, f.eks: http://i.imgur.com/hhRDO4d.png

 

 

takker :D

endelig ferdig med innleveringa etter god hjelp!

Endret av Kj3tll
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å
×
×
  • Opprett ny...