Wat moet ik precies gebruiken? Subquery, Join, etc.
Ik ben al een tijdje aan het zoeken naar de oplossing voor mijn query, maar kom er niet uit na al een tijd gezocht te hebben.
Wat ik wil is als volgt.
Ik heb een puntensysteem op mijn site staan en ik wil dat als men het goede voorspelt, dat dan de punten erbij komen. Om te weten of diegene het goed heeft voorspelt, moeten natuurlijk wel de voorspellingen worden ingevoerd in het systeem. Ik heb nu een systeem dat je als admin de goede voorspelling kan opslaan. Nu wil ik dat meteen iedereen de punten krijgt op het moment dat de admin op 'opslaan' klikt.
Nu heb ik een tabel `voorspellingen` en een tabel `punten`.
Mijn query's zien er zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE IF NOT EXISTS `voorspellingen` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`naam` varchar(255) NOT NULL,
`winnaar` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
CREATE TABLE IF NOT EXISTS `punten` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`naam` varchar(255) NOT NULL,
`punten` int(255) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
`id` int(255) NOT NULL AUTO_INCREMENT,
`naam` varchar(255) NOT NULL,
`winnaar` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
CREATE TABLE IF NOT EXISTS `punten` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`naam` varchar(255) NOT NULL,
`punten` int(255) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
Nu wil ik dus in één query het voor mekaar krijgen, dat iedereen die bij `voorspellingen` bij `winnaar` bijv. 'speler1' heeft, automatisch bij `punten` +10 punten krijgt.
Nu heb ik het al geprobeerd met een subquery, maar dan krijg ik de melding dat ik meer dan 1 row heb. Nu wou ik het met 'Join' doen, maar daar snap ik niet veel van. Heb verschillende tutorials en fora doorgelezen, maar kom er niet uit.
Het idee is dus simpel. Hoe het er uit moet zien:
Code (php)
1
mysql_query("UPDATE `punten` SET `punten`=`punten`+'10' WHERE /* Hier komt dus het selecteren van de andere tabel voor mensen die voor `winnaar` 'speler1' hebben. */");
Heeft iemand de goede query voor mij waarmee ik het toch kan uitvoeren?
Alvast bedankt!
Jacob
Zoiets?
Joren de Wit op 20/06/2012 22:59:11:
Ah, hartstikke bedankt! Ik zie inderdaad al waar ik het fout had gedaan: ik had namelijk WHERE winnaar IN (...) gedaan.
Haha, toevallig ben ik ook de topicstarter van dat topic. Ik had het eerst daar gevraagd, maar daar bleef eerst geen reactie komen. Toen heb ik het hier geplaatst en kreeg ik vrij snel antwoord. Daarna kreeg ik daar ook antwoord met al die tips. In ieder geval bedankt voor het meedenken! :)