Hallo SiteDeals,
ik kreeg een vraagstuk voor mijn neus geschoven waar ik nu echt niet meer uitkom, en aangezien ik dat niet kan hebben wil ik graag de oplossing vinden!
Het is zo dat ik 2 tables heb met 'producten' die gedownload kunnen worden, in principe staan deze 2 tables voor het type van het product.
De structuur:
table [type_1] { id | product_name | username | downloads }
table [type_2] { id | product_name | username | downloads }
Een username kan uiteraard nu vaker voorkomen, een gebruiker kan nou eenmaal meer dan 1 product hebben. Maar nu wil ik een top 10 genereren van de gebruikers die in totaal de meeste downloads hebben, dus de SUM() van type_1 + de SUM() van type_2 bij elkaar opgeteld achter de gebruiker.
De gewenste output is:
Gebruiker | downloads over de 2 types (DESC)
Nu is dit 'probleem' simpel op te lossen door de structuur te veranderen:
table [products] { id | type | product_name | username | downloads }
Maar ik ben ervan overtuigd dat het mogelijk is door JOIN's, UNION's, whatever's in 1 query de juiste data op te vragen. Ik kom er niet uit maar ben heel erg benieuwd hoe dit wel moet.
Ik hoop dat jullie me kunnen helpen deze ingewikkelde query samen te stellen.
Met vriendeke groet,
Jesse Degger
- SQL SUM van 2 tables in group
-
24-05-2010, 15:20 #1
- Berichten
- 165
- Lid sinds
- 16 Jaar
SQL SUM van 2 tables in group
-
-
24-05-2010, 16:34 #2
- Berichten
- 257
- Lid sinds
- 15 Jaar
Ik denk dat je Temporary tables moet gaan gebruiken om het makkelijk te houden.
http://dev.mysql.com/doc/refman/5.1/...ate-table.html
-
24-05-2010, 16:54 #3
- Berichten
- 289
- Lid sinds
- 16 Jaar
PHP Code:SELECT ( SUM( t1.downloads ) + SUM( t2.downloads ) ) AS total FROM type1 t1, type2 t2 WHERE t1.username = t2.username GROUP BY t1.username, t2.username ORDER BY total DESC
-
24-05-2010, 17:27 #4
- Berichten
- 165
- Lid sinds
- 16 Jaar
Zoiets heb ik al geprobeerd, maar als ik dan enkel in t2 1 rij heb met de gebruikersnaam en deze heeft 4 downloads dan maakt hij met de sum hier 24 van?
Naar temporary tables zal ik kijken, is dit niet mogelijk in gewoon 1 query?
-edit-
naar wat beter kijken zie ik over het hoofd dat je er hebt neergezet
"WHERE t1.username = t2.username"
Maar ook dat heb ik al geprobeerd, dat werkt prima op 't feit na dat als er geen row bestaat met de gebruikersnaam in t2 en in t1 wel, dat hij hem niet weergeeft terwijl deze misschien best in de top 10 hoort.Laatst aangepast door Jesse Degger : 24-05-2010 om 17:59
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic