Avatar billede montago Praktikant
30. juni 2004 - 15:01 Der er 16 kommentarer og
1 løsning

tricky SQL

følgende SQL laver en TOP10 liste

"Select TOP 10 Car_ID,Count(*) as votes,avg(Car_Rate) from carRatings Group by Car_ID order by Count(*) desc"

jeg vil gerne hente navnet på ejeren fra en trejde tabel - via en anden

sammenhængen er:
CarRatings.Car_ID = Cars.ID

sammenhængen mellem Cars og Profiles er
Cars.Car_Owner = Profiles.ID

hvordan får jeg hentet navnet (Profiles.Username) fra Profiles i en og samme sql ??

jeg ved hvordan jeg gør på den primitive måde... men vil gerne bruge SQL så vidt muligt
Avatar billede fennec Nybegynder
30. juni 2004 - 15:05 #1
Prøv denne:

"Select TOP 10 Car_ID,Count(*) as votes,avg(Car_Rate), Cars.OvnerName from (carRatings inner join Cars on Cars.id=CarRatings.Car_ID ) Group by Car_ID, Cars.OvnerName order by Count(*) desc"
Avatar billede montago Praktikant
30. juni 2004 - 15:06 #2
nix
Avatar billede montago Praktikant
30. juni 2004 - 15:06 #3
virkede ikke
Avatar billede fennec Nybegynder
30. juni 2004 - 15:08 #4
Får du en fejl, og hvilken datadase bruger du??
Avatar billede montago Praktikant
30. juni 2004 - 15:08 #5
rettede den lige til... men jeg får kun ID'et fra Profiles... ikke Username
Avatar billede montago Praktikant
30. juni 2004 - 15:08 #6
Select TOP 10 Car_ID,Count(*) as votes,avg(Car_Rate), Cars.Car_Owner from (carRatings inner join Cars on Cars.id=CarRatings.Car_ID ) Group by Car_ID, Cars.Car_Owner order by Count(*) desc
Avatar billede montago Praktikant
30. juni 2004 - 15:08 #7
jeg bruger Access + ASP
Avatar billede fennec Nybegynder
30. juni 2004 - 15:12 #8
min fejl :(
mangler en join til.

Select TOP 10 Car_ID,Count(*) as votes,avg(Car_Rate), Profiles.Username from ((carRatings inner join Cars on Cars.id=CarRatings.Car_ID ) inner join Profiles on Profiles.id=Cars.Car_Owner) Group by Car_ID, Profiles.Username order by Count(*) desc
Avatar billede montago Praktikant
30. juni 2004 - 15:18 #9
hmm er det samtidig også muligt at trække endnu en information ud fra tabellen Cars ??

nemlig Cars.Car_slot1

den virker nemlig ikke helt...
Avatar billede fennec Nybegynder
30. juni 2004 - 15:21 #10
Det burde være muligt:

Select TOP 10 Car_ID,Count(*) as votes,avg(Car_Rate), Profiles.Username, Cars.Car_slot1 from ((carRatings inner join Cars on Cars.id=CarRatings.Car_ID ) inner join Profiles on Profiles.id=Cars.Car_Owner) Group by Car_ID, Profiles.Username,Cars.Car_slot1 order by Count(*) desc
Avatar billede montago Praktikant
30. juni 2004 - 15:24 #11
fuk en lang sql...

men den virker nu !!

svare du lige så du kan få nogle point - Tak for hjælpen !
Avatar billede fennec Nybegynder
30. juni 2004 - 15:28 #12
no prob
.o) <-- one eyed jack
Avatar billede fennec Nybegynder
30. juni 2004 - 15:28 #13
også skal vi lige svare også.
Avatar billede montago Praktikant
30. juni 2004 - 15:31 #14
ehhe skulle lige indse det med Group by, hver gang man ville have flere info
Avatar billede fennec Nybegynder
30. juni 2004 - 15:36 #15
Nemlig.
Hvis selecten indeholder aggregate funktioner (sum(), count(), avg()....) skal alle andre felter i group by listen.
Avatar billede montago Praktikant
30. juni 2004 - 15:48 #16
ehe... jeg bliver nødt til at skaffe mig en SQL håndbog...
Avatar billede fennec Nybegynder
30. juni 2004 - 15:54 #17
Jeg plejer at bruge MySQL's online. Den synes jeg er meget god, så længe man bare husker at funktionerne ikke nødvendig hedder det samme/eksistere i andre databaser.

Hvis det var noget kan den findes her: http://dev.mysql.com/doc/mysql/en/
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
Kurser inden for grundlæggende programmering

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