[mysql] velden bewerken via "where" uit csv bestand

Pagina: 1
Acties:

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 22:16
Het volgende is de situatie:

Een database bevat alle gegevens van leerlingen op een school, die nodig zijn voor het intranet. Nu is het schooljaar voorbij, en moeten de leerlingen dus een klas hoger geschoven worden. Dat is zo gebeurd:

UPDATE 'lldata' SET 'klas' = 'klas'+1;

Werkt. Alleen zou er nu dus een correctie moeten worden verricht op de leerlingen die zijn blijven zitten. Deze nummers staan in een csv bestand. zoiets als

UPDATE 'lldata' SET 'klas' = 'klas'-1 WHERE 'leerlingnummer' = INFILE ....;

wie weet mij uit de brand te helpen, of lukt dit niet?

Sometimes you need to plan for coincidence


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Even een eerste opmerking:

Aangezien je klas met 1 verhoogd, ga ik er van uit dat klas een numeriek veld is. Rond numerieke velden zet je geen quotes; anders worden ze als alfanumeriek behandeld.

Ff een tweede opmerking : ga je nu zelf dingen gaan uitvinden, of bestaat die INFILE ook echt in MySQL?
Je kan dat csv bestand gaan inlezen in een andere , tijdelijke tabel, en dan die tabel gebruiken om de leerlingen te vinden van wie hun klas opnieuw verlaagd moet worden.

https://fgheysels.github.io/


  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 22:16
whoami schreef op 04 September 2003 @ 19:19:
Even een eerste opmerking:

Aangezien je klas met 1 verhoogd, ga ik er van uit dat klas een numeriek veld is. Rond numerieke velden zet je geen quotes; anders worden ze als alfanumeriek behandeld.
Hmm, het was ook maar ff snel uit de losse pols, tnx anyway
Ff een tweede opmerking : ga je nu zelf dingen gaan uitvinden, of bestaat die INFILE ook echt in MySQL?
Je kan dat csv bestand gaan inlezen in een andere , tijdelijke tabel, en dan die tabel gebruiken om de leerlingen te vinden van wie hun klas opnieuw verlaagd moet worden.
INFILE bestaat wel, maar ik weet niet of het voor deze constructie geschikt is.
Met je tip kan ik wat.
Ik zou dan dus een nieuwe tabel moeten vullen, en dan gewoon een update draaien met "WHERE leerlingnummer IN database.temptable" oid? de vorm van de query needs some help :?

[ Voor 1% gewijzigd door Hmmbob op 04-09-2003 19:37 . Reden: typo ]

Sometimes you need to plan for coincidence


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Je kan het gewoon met een Join doen ofzo.

Ik weet niet of MySQL dergelijke syntax ondersteund, maar Sql Server doet dat wel:

code:
1
2
3
update leerlingen
SET leerlingen.Klas = leerlingen.Klas - 1
FROM temptabel WHERE temptabel.leerlingId = leerlingen.LeerlingId

https://fgheysels.github.io/


  • slm
  • Registratie: Januari 2003
  • Laatst online: 25-06 12:45

slm

whoami schreef op 04 September 2003 @ 19:41:
Je kan het gewoon met een Join doen ofzo.

Ik weet niet of MySQL dergelijke syntax ondersteund, maar Sql Server doet dat wel:

code:
1
2
3
update leerlingen
SET leerlingen.Klas = leerlingen.Klas - 1
FROM temptabel WHERE temptabel.leerlingId = leerlingen.LeerlingId
Dat lukt volgens mij alleen in MySQL 4.x en normaal zet je dan de 2 tabellen die je gebruikt bij de update, dus zoiets als: UPDATE db1,db2 SET db1.veldje='newvalue' WHERE db1.idx = db2.idx

To study and not think is a waste. To think and not study is dangerous.


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
slm schreef op 04 September 2003 @ 19:51:
[...]


Dat lukt volgens mij alleen in MySQL 4.x en normaal zet je dan de 2 tabellen die je gebruikt bij de update, dus zoiets als: UPDATE db1,db2 SET db1.veldje='newvalue' WHERE db1.idx = db2.idx
Nouja, dat kan wel zijn.
Daarom dat ik zei dat dit zo ongeveer de syntax was in MS SQL Server. ;) De juiste syntax in MySQL kan de topicstarter zelf wel opzoeken.
Feit is dat hij een hintje heeft gekregen in de juiste richting.

https://fgheysels.github.io/


  • slm
  • Registratie: Januari 2003
  • Laatst online: 25-06 12:45

slm

Sorry hoor... :)

To study and not think is a waste. To think and not study is dangerous.


  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 22:16
hmm, geen mysql4 beschikbaar helaas... Damn, moet ik toch iets gaan kloten met een for-loopje ofzo in php. toch bedankt

Sometimes you need to plan for coincidence

Pagina: 1