Wat moet ik precies gebruiken? Subquery, Join, etc.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Jacob de Graaf

Jacob de Graaf

20/06/2012 22:24:52
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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 ;


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)
PHP script in nieuw venster Selecteer het PHP script
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
 
PHP hulp

PHP hulp

01/12/2024 03:36:08
 
Joren de Wit

Joren de Wit

20/06/2012 22:59:11
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
WHERE
  naam IN (
    SELECT naam
    FROM voorspellingen
    WHERE winnaar = 'speler1'
  )

Zoiets?
 
Jacob de Graaf

Jacob de Graaf

21/06/2012 16:25:52
Quote Anchor link
Joren de Wit op 20/06/2012 22:59:11:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
WHERE
  naam IN (
    SELECT naam
    FROM voorspellingen
    WHERE winnaar = 'speler1'
  )

Zoiets?


Ah, hartstikke bedankt! Ik zie inderdaad al waar ik het fout had gedaan: ik had namelijk WHERE winnaar IN (...) gedaan.
 
Obelix Idefix

Obelix Idefix

21/06/2012 21:11:08
Quote Anchor link
En anders heb je misschien nog wat aan de tip(s) in http://www.pfz.nl/forum/topic/7835-subquery-join/
 
Jacob de Graaf

Jacob de Graaf

21/06/2012 21:29:52
Quote Anchor link
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! :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.