[MySQL] Probleempje met koppeling 2 tabellen en SUM()..

Pagina: 1
Acties:

  • pim
  • Registratie: Juli 2001
  • Laatst online: 20-07 15:45
Ik heb 2 tabellen:

De tabel "stats"(10.000 records):
code:
1
2
3
4
5
6
7
8
9
10
11
12
clicks  extensie
-------------------------------------
1       US
4       US
2       US
1       US
4       NL
2       NL
1       NL
1       NL
2       NL
1       BE

En de tabel: "iptocountry"(60.000 records):

code:
1
2
3
4
5
6
7
8
9
10
11
12
COUNTRY_CODE2   COUNTRY_NAME
---------------------------------------------------------
US          UNITED STATES
US          UNITED STATES
US          UNITED STATES
US          UNITED STATES
NL          NETHERLANDS
NL          NETHERLANDS
NL          NETHERLANDS
NL          NETHERLANDS
NL          NETHERLANDS
BE          BELGIUM

Nu wil ik dat ie in de tabel 'stats' de 'country' kolom groupeert,
de clicks bij mekaar optelt, en vervolgens in de tabel 'iptocountry' kijkt
welke COUNTRY_NAME er bij de extensie hoort.
Dus NL hoort bij NETHERLANDS.

Uiteindelijk moet ie zo'n overzichtje genereren:
code:
1
2
3
4
5
clicks  COUNTRY_NAME
---------------------
10      NETHERLANDS
8       UNITED STATES
1       BELGIUM

Maar hij genereert een overzicht met extreme waardes, waarvan ik niet weet waar ze vandaan komen..

SELECT SUM(clicks) AS clicks, COUNTRY_NAME AS country
FROM iptocountry, stats
WHERE iptocountry.COUNTRY_CODE2 = stats.country
GROUP BY stats.country
ORDER BY clicks DESC

Afbeeldingslocatie: http://www.linktrades.nl/landen._query.gif

Iemand die weet hoe de query wel moet?

  • mocean
  • Registratie: November 2000
  • Laatst online: 15-08 04:26
Maak er een join van
code:
1
2
3
4
5
SELECT SUM(stats.clicks) AS clicks, iptocountry.COUNTRY_NAME AS country
FROM iptocountry
LEFT JOIN stats ON iptocountry.COUNTRY_CODE2 = stats.country
GROUP BY stats.country
ORDER BY clicks DESC


Ik ben nu niet in de mogelijkheid om te testen, maar met een JOIN wordt het volgend mij makkelijker.

[ Voor 3% gewijzigd door mocean op 18-11-2003 18:42 ]

Koop of verkoop je webshop: ecquisition.com


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

mocean:
Maak er een join van
Nu kan jij ons vast ook wel uitleggen wat het verschil is tussen een equi join en een left join? ;) (zie evt. P&W FAQ)

pim >Je verhaal klopt niet helemaal, de namen die je in de query noemt komen niet overeen met de namen die je in je tabellen laat zien :) Dus ik kan eigenlijk ook niet zo goed vertellen waarom je query nou niet werkt, want ik heb het gevoel dat te maken heeft met slecht doordachte naamgeving :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

Je query werkt sowieso niet, want je grouped op de verkeerde kolom (foutje bij het overtypen?)

Als tweede, AS gebruiken en dan de naam van een kolom die in de oorspronkelijke tabel ook bestaat gebruiken lijkt me niet echt handig, alleen maar verwarrend (country_name AS country?)

Verder weet ik niet of die iptocountry tabel nog uitgebreider is (meer kolommen bedoel ik), want als je in die tabel de dubbele weghaald dan is het probleem opgelost. Probleem is namelijk dat hij nu het resultaat verdubbeld omdat hij meerdere keren GROUPED.