Avatar billede megalw Nybegynder
03. januar 2002 - 19:26 Der er 9 kommentarer

Bøvl med en helveds lang query

Hejsa - jeg har nogle problemer følgende query:

$query = mysql_query(\"SELECT users.username, SUM(pix.point) AS pixpoint, SUM(source.point) AS sourcepoint, (SUM(source.point) + SUM(pix.point)) AS ialt FROM users LEFT JOIN pix ON users.username=pix.udgiver LEFT JOIN source ON users.username=source.udgiver GROUP BY users.username ORDER BY $sort DESC LIMIT $start$limit\") or die (mysql_error());

Ideén med denne query er at hente alle pointe som de forskellige brugere måtte have, se evt: http://www.eksperten.dk/spm/140173

Det virker også ganske udemærket så længe at brugerne ikke har fået point i både \"source\" og \"pix\" tabellerne, så kommer den med nogle alt for høje tal, se evt: www.blarp.dk/brugere.php

Jeg har stirret mine øjne røde på den query, uden resultat så nu håber jeg at I har nogle forslag :)
Avatar billede myplacedk Nybegynder
03. januar 2002 - 19:38 #1
Bare lige for at hjælpe folk, der skal prøve at forstå din SQL-ting, her det samme, bare med lidt ekstra white-space:
SELECT
  users.username,
  SUM(pix.point) AS pixpoint,
  SUM(source.point) AS sourcepoint,
  (SUM(source.point) + SUM(pix.point)) AS ialt
FROM users
  LEFT JOIN pix ON users.username=pix.udgiver
  LEFT JOIN source ON users.username=source.udgiver
GROUP BY users.username
ORDER BY $sort DESC
LIMIT $start$limit\";
Avatar billede myplacedk Nybegynder
03. januar 2002 - 19:39 #2
Hvad er for højt?
pixpoint?
sourcepoint?
ialt?
Avatar billede megalw Nybegynder
03. januar 2002 - 19:42 #3
Okay, vil prøve at huske det :)


pixpoint, og dermed også ialt!
Avatar billede myplacedk Nybegynder
03. januar 2002 - 19:50 #4
Altså: pixpoint og sourcepoint er rigtige nok, undtagen hvis man har point i begge, så er pixpoint forkert.
ialt fungerer fint nok, selv om den selvfølgelig giver forkerte resultater.

right?
Avatar billede megalw Nybegynder
03. januar 2002 - 19:57 #5
Sorry, min fejl...

sourcepoint vil heller ikke som jeg vil, den er også for høj når der er noget i begge 2
Avatar billede myplacedk Nybegynder
03. januar 2002 - 20:39 #6
Kan du komme med et eksempel på hvad de burde være, og hvad de er i stedet for?
Avatar billede megalw Nybegynder
03. januar 2002 - 22:33 #7
Ja, ved RosenQvist. Han for 120 sourcepoint men skulle kun have 30, og 408 pixpoint hvor han skulle have 102.
Avatar billede myplacedk Nybegynder
03. januar 2002 - 23:03 #8
Aha, de får 4 gange for mange point. Sikkert en sjov følge af 2 joins.
Avatar billede myplacedk Nybegynder
03. januar 2002 - 23:06 #9
Først har du listen over brugere. fx:

username:
arne
bent
carsten

Så joiner du med pix. Lad os sige de har to pix hver:

users.username:  pix.udgiver:  pix.point
arne            arne          30
arne            arne          40
...

Derefter bliver hver linje joinet med sources. Nu bliver Arnes sources altså talt to gange.

Hvordan den går videre derfra til at begge dele er 4 gange for højt, og hvad du kan gøre ved det, det ved jeg ikke lige. :)
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
Computerworld tilbyder specialiserede kurser i database-management

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