[MYSQL] Update probleempje

Pagina: 1
Acties:

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Ik heb de volgende twee tabellen die ik wil gaan samenvoegen:

extra_deb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Field        Type     Null  Default  Extra  
Unieknr    double   No       auto_increment  
Debiteur      int(11)     No  0    
Mastermail  char(1)     Yes 
Wijn        char(1)     Yes 
Emailadres  varchar(80) Yes 
Contactpersoon  varchar(80) Yes 
Adres        varchar(80) Yes    
Huisnummer  varchar(7)  Yes 
Postcode      varchar(6)  Yes   
Plaats      varchar(40) Yes 
Telefoonnummer  varchar(20) Yes 
MAP      char(1)     Yes    
Extra_info  text      Yes


en

testmail:
code:
1
2
3
4
5
6
7
8
9
Field       Type    Null Default  Extra  
ADRES_POSTKODE longtext   Yes   
Naam         longtext   Yes 
Adres       longtext   Yes  
Huisnr     longtext   Yes   
Plaats     longtext   Yes   
Mailen     longtext   Yes   
tav     longtext   Yes  
Debiteur     int(11)    No  0

Nu is de bedoeling dat de dat die in testmail staat overgaat in de tabel extra_deb.

Nu heb ik de volgende update query gemaakt :
code:
1
2
3
4
5
6
UPDATE extra_deb 
SET 
extra_deb.Mastermail="J", extra_deb.Contactpersoon=testmail.tav, extra_deb.adres=testmail.adres,
extra_deb.huisnummer=testmail.huisnr,
extra_deb.plaats=testmail.plaats 
WHERE extra_deb.debiteur=testmail.debiteur;

Maar dan geeft hij de volgende mysql fout :
code:
1
MySQL said: Unknown table 'testmail' in where clause

??? Ik snap dit niet, ik kan toch in mysql gewoon gegevens updaten uit een andere tabel ???

Kan iemand mij vertellen wat ik hier fout doe, want ik heb al op de manpages van mysql gekeken, maar hier staat vrij weinig info over de update functie. En volgens mij is dit gewoon goed in normaal SQL.

  • eborn
  • Registratie: April 2000
  • Laatst online: 04-09 10:47
Zover ik weet kun je in MySQL enkel updaten op één tabel. Als je gegevens vanuit een andere tabel wilt overzetten doe je dat meestal met INSERT INTO. Maar dat is hier denk ik niet echt van toepassing, omdat je een tabel met gegevens uit een andere tabel probeert te updaten.

Werkt het ook niet als je de tabel "textmail" achter UPDATE zet, dus UPDATE extra_deb,testmail ... ?

Verwijderd

vlgs mij kan dat idd niet je kunt niet een tabel updaten met waarden uit een andere.. dat moet je eerst die waarden in variabelen zetten en dan inserten

  • Baarsjes
  • Registratie: April 2002
  • Niet online

Baarsjes

Unagi

En als je die 2 tabellen nou voor de where clause zet in een from statement? Dus:
code:
1
2
3
4
5
6
7
8
9
UPDATE extra_deb 
SET 
extra_deb.Mastermail="J", extra_deb.Contactpersoon=testmail.tav, extra_deb.adres=testmail.adres,
extra_deb.huisnummer=testmail.huisnr,
extra_deb.plaats=testmail.plaats 

from extra_deb, testmail

WHERE extra_deb.debiteur=testmail.debiteur;

http://www.bonuszoeken.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:59
Op donderdag 13 juni 2002 11:39 schreef Baarsjes het volgende:
En als je die 2 tabellen nou voor de where clause zet in een from statement? Dus:
code:
1
2
3
4
5
6
7
8
9
UPDATE extra_deb 
SET 
extra_deb.Mastermail="J", extra_deb.Contactpersoon=testmail.tav, extra_deb.adres=testmail.adres,
extra_deb.huisnummer=testmail.huisnr,
extra_deb.plaats=testmail.plaats 

from extra_deb, testmail

WHERE extra_deb.debiteur=testmail.debiteur;
Dat gaat al helemaal niet lukken. Dit is geen geldig SQL statement.

Je kunt het eens proberen door testmail ook in uw update clause te zetten, maar ik weet niet of het gaat werken in MySQL.
Een andere mogelijkheid zou zijn om het met een subquery te doen, maar dit lukt ook al niet in MySQL.

https://fgheysels.github.io/


  • Baarsjes
  • Registratie: April 2002
  • Niet online

Baarsjes

Unagi

Op donderdag 13 juni 2002 11:42 schreef whoami het volgende:

[..]

Dat gaat al helemaal niet lukken. Dit is geen geldig SQL statement.

Je kunt het eens proberen door testmail ook in uw update clause te zetten, maar ik weet niet of het gaat werken in MySQL.
Een andere mogelijkheid zou zijn om het met een subquery te doen, maar dit lukt ook al niet in MySQL.
Het werkt wel in sql advantage, al heb ik het daar gedaan met het updaten van 1 veld, dat was zo dan:
code:
1
2
3
4
5
update b_table1 
set b_table1.datum = b_table2.Kdatum
from b_table1, b_table2

where  b_table1.serienr = b_table2.serienr

Dit werkt wel, waarom die andere dan niet?

http://www.bonuszoeken.nl


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Blijkbaar werkt het niet in mysql, gelukkig is het een eenmalige aanpassing. Dus dan maar gewoon weer met MS Access een keertje doen en teruglezen in mysql. In ieder geval bedankt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:59
Een UPDATE statement met een FROM clause? Da's volgens mij geen ANSI SQL hoor.

'k Heb het net even getest in Access en daar werkt het niet, en ik denk dat de 'echte' DBMS'en (Oracle, Informix, DB2, SQL Server) dit ook niet zullen toelaten.

https://fgheysels.github.io/


  • Baarsjes
  • Registratie: April 2002
  • Niet online

Baarsjes

Unagi

Op donderdag 13 juni 2002 11:57 schreef whoami het volgende:
Een UPDATE statement met een FROM clause? Da's volgens mij geen ANSI SQL hoor.

'k Heb het net even getest in Access en daar werkt het niet, en ik denk dat de 'echte' DBMS'en (Oracle, Informix, DB2, SQL Server) dit ook niet zullen toelaten.
Tja, ik heb hier een boek liggen over Sybase SQL server en daar staat het er toch echt in:

"Use the from clause to pull data from one or more tables into the table you're updating"

Dus weet niet of dit specifiek alleen kan bij deze programma's of dat het wel een normale sql statement is.

http://www.bonuszoeken.nl


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Ziet er uit alsof je op een loopje uitkomt met een select op de tabel die je wilt leegtrekken en losse update's in de tabel waarin het terecht moet komen.
Als het in een SQL-dialect wel kan is het meegenomen, maar in MySQL heb ik het nog neit gezien
Pagina: 1