stian90_2 Skrevet 9. oktober 2006 Del Skrevet 9. oktober 2006 Hei. Jeg får stadig error "Invalig use of group function" Jeg har denne sql spørringa: SELECT mottaid,COUNT(*) FROM cm WHERE kjonn='Jente' GROUP BY mottaid ORDER BY COUNT(*) DESC LIMIT 1 Hva er galt, har prøvd det meste nå i noen timer. Uten og skjønne det helt =/ Lenke til kommentar
roac Skrevet 9. oktober 2006 Del Skrevet 9. oktober 2006 Hei. Jeg får stadig error "Invalig use of group function" Jeg har denne sql spørringa: SELECT mottaid,COUNT(*) FROM cm WHERE kjonn='Jente' GROUP BY mottaid ORDER BY COUNT(*) DESC LIMIT 1 Hva er galt, har prøvd det meste nå i noen timer. Uten og skjønne det helt =/ 7037039[/snapback] I Microsoft SQL Server vil tilsvarende gå, hva som gjør at (MySQL?) ikke takler denne er jeg ikke sikker på, men du kan prøve følgende: SELECT mottaid,COUNT(*) AS antall FROM cm WHERE kjonn='Jente' GROUP BY mottaid ORDER BY antall DESC LIMIT 1 Uten at jeg på noen måte vil garantere at det kommer til å virke, og jeg har ingen MySQL database jeg kan teste dette på. Forøvrig så bør kjonn reduseres til et enkelt tegn siden det bare er to valgalternativer, eller kanskje til og med datatypen bit (som dessverre er tatt ut av SQL-standarden i SQL:2003). Lenke til kommentar
stian90_2 Skrevet 9. oktober 2006 Forfatter Del Skrevet 9. oktober 2006 Joda, den funker veldig fint den. Så fikk jeg lært noe nytt i dag også. Takk for hjelpen Lenke til kommentar
Manfred Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 men... har kjønn som en varchar? bra vi ikke lager spesielt mye overkill her da Lenke til kommentar
roac Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 men... har kjønn som en varchar? bra vi ikke lager spesielt mye overkill her da 7096315[/snapback] Jo, men det er nok av de som har dette som 'Mann' og 'Kvinne' Lenke til kommentar
Manfred Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 hva med et bit-felt? kan det egentlig være så mye annet enn enten eller? Lenke til kommentar
roac Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 hva med et bit-felt? kan det egentlig være så mye annet enn enten eller? 7096334[/snapback] Nei, men det er nå også sånn at det ikke nødvendigvis er en god idé å basere seg på bit. Når det gjelder kjønn så kan dette være fordi kjønn ikke nødvendigvis alltid er kjent (Ja, jeg vet at man kan bruke NULL her, men skal man ha større og mer komplekse spørringer så vil det være en fordel å eliminere en hel del sjekk på NULL). Videre bør man kanksje vurdere hvor smart det er å bruke datatypen bit, siden det er en datatype som er tatt ut av sql-standarden i SQL:2003. Det kan derfor være at bit blir fjernet fra databaseimplementasjoner, selv om jeg strengt tatt håper at det ikke vil skje. Personlig vil jeg nok foretrekke å bruke en enkelt char til kjønn, av hensyn til lesbarhet, kodeeffektivitet og kode som følger siste sql-standard. Lenke til kommentar
roac Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 (endret) Edit: Dobbeltpost Endret 18. oktober 2006 av roac Lenke til kommentar
Manfred Skrevet 20. oktober 2006 Del Skrevet 20. oktober 2006 En ting er da å bruke en char som kjønn, evt. kjøre dette som en fremmednøkkel-int. Du kan kanskje si det er litt overkill, men kan være greit å få ut "Mann", "Kvinne", "Ukjent", "MTF", "FTM" osv fra en spørring, så slipper man så mye kode rundt. I tillegg slipper man dobbeltlagring av masse bokstaver Lenke til kommentar
roac Skrevet 20. oktober 2006 Del Skrevet 20. oktober 2006 En ting er da å bruke en char som kjønn, evt. kjøre dette som en fremmednøkkel-int. Du kan kanskje si det er litt overkill, men kan være greit å få ut "Mann", "Kvinne", "Ukjent", "MTF", "FTM" osv fra en spørring, så slipper man så mye kode rundt. I tillegg slipper man dobbeltlagring av masse bokstaver 7110810[/snapback] Jeg vil faktisk si at det er en dårlig idé, rett og slett fordi du vil få ekstra overhead i forbindelse med join, og det er minimalt med besparelse på radstørrelse. Normalisering er i utgangspunktet en god idé, men ikke alltid Lenke til kommentar
Manfred Skrevet 20. oktober 2006 Del Skrevet 20. oktober 2006 Det spørs litt hva det skal brukes til, og hvor mange valg du skal ha. Som du ser la jeg på to alternativer du ikke hadde med. Skal du bruke en bokstav krever dette at man vet hva de står for når man programmerer, dessuten krever det da mer programmeringsteknisk med conditionals eller if'er når man skal vise dette på en site. Lenke til kommentar
roac Skrevet 20. oktober 2006 Del Skrevet 20. oktober 2006 Det spørs litt hva det skal brukes til, og hvor mange valg du skal ha. Som du ser la jeg på to alternativer du ikke hadde med. Skal du bruke en bokstav krever dette at man vet hva de står for når man programmerer, dessuten krever det da mer programmeringsteknisk med conditionals eller if'er når man skal vise dette på en site. 7111941[/snapback] Jeg tror ikke du forstår hva jeg mener. Jeg sa ikke at du SKULLE bruke en bokstav, men jeg sa at det var en dårlig idé å trekke de alternativene ut i en egen tabell, siden det er ekstra overhead forbundet med join mellom de to tabellene. Det vil også være overhead i forbindelse med ivaretagelse av referential integrity, så da ville jeg heller ivaretatt tekst i tabellen. Lenke til kommentar
Manfred Skrevet 20. oktober 2006 Del Skrevet 20. oktober 2006 Jeg bare mener at det er en uting å ha "Gutt", "Jente" osv som tekst i en tabell. Men det er min mening. Lenke til kommentar
roac Skrevet 21. oktober 2006 Del Skrevet 21. oktober 2006 Jeg bare mener at det er en uting å ha "Gutt", "Jente" osv som tekst i en tabell. Men det er min mening. 7113156[/snapback] Har du noen god begrunnelse for dette? Slike betraktninger bør skje på et faglig grunnlag, ikke hva man synes. Generelt sett er normalisering bra, men ikke nødvendigvis til enhver pris, og databaser kan fint bli tregere ved å normalisere mer enn strengt tatt nødvendig, og dette vil være et klart tilfelle hvor man sannsynligvis bare vil få ekstra overhead ved å normalisere. Lenke til kommentar
Manfred Skrevet 21. oktober 2006 Del Skrevet 21. oktober 2006 både ut ifra normalisering, men også ut ifra den tanken at man skal jobbe med dette senere også. Det å legge inn fulltekst "gutt", "jente" skriker imot ethvert prinsipp for min del når det kommer til databaser. Lenke til kommentar
roac Skrevet 21. oktober 2006 Del Skrevet 21. oktober 2006 både ut ifra normalisering, men også ut ifra den tanken at man skal jobbe med dette senere også. Det å legge inn fulltekst "gutt", "jente" skriker imot ethvert prinsipp for min del når det kommer til databaser. 7117652[/snapback] Hvilket prinsipp? Lenke til kommentar
Manfred Skrevet 21. oktober 2006 Del Skrevet 21. oktober 2006 Er du bare født vrang, egentlig? Lenke til kommentar
roac Skrevet 21. oktober 2006 Del Skrevet 21. oktober 2006 Er du bare født vrang, egentlig? 7117805[/snapback] Nei det er jeg ikke, men det virker som om du har bestemt deg for at det er best å trekke de dataene ut i en egen tabell uten egentlig å ha en veldig god grunn til det, og det stiller jeg meg kritisk til. Hvis du kan komme opp med en plausibel begrunnelse for den relativt ekstreme normaliseringen så er det vel og bra, men jeg kan ikke se at du har kommet med det, men sier at det er prinsippielet. Jeg har i det minste beskrevet hvorfor jeg finner denne graden av normalisering lite hensiktsmessig, du har sagt at det er fordi du ikke liker det, noe som profesjonelt sett er en meget dårlig begrunnelse. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå