Hallo allemaal,

De titel zegt het eigenlijk al, is het mogelijk om met 1 script 2 kolommen uit verschillende tabellen aan te passen.

Bijvoorbeeld kolom ID staat in tabel 1 en
kolom ID staat in tabel 2.

Is het dan dus mogelijk als ik kolom ID uit tabel 1 aanpas, dat dan ook kolom ID uit tabel 2 mee veranderd.
Ja dat kan via een join:

UPDATE tabel1 a
LEFT JOIN tabel2 b on a.id = b.id
SET a.name = 'boo', 
  b.name2 = 'boo'
WHERE a.id = 1;


Toevoeging op 12/03/2014 15:46:32:

Of, extra optie die je mogelijk bedoelt, als het puur om het id gaat (een key dus), dan kan je er een foreign key op plaatsen. Als je dan het id in de ene verandert en de foreign key op CASCADE hebt gezet, dan gaan gelinkte records in de andere tabel mee.
Bedankt voor je snelle reactie,

het gaat om een code, als je inlogt ziet het systeem welke code je hebt (0,1,2,3,4,9) deze kolom "code" staat in 2 verschillende tabellen.

Mij lijkt nu de oplossing om een join te gebruiken.
De gebruiker logt in met een gebruikersnaam en wachtwoord.
De code is dus puur voor wat de gebruiker/supervisor kan en mag.
Hmm, dan zou je je alleen moeten gaan afvragen waarom het in 2 tabellen staat. Dat is dubbele info en 99 van de 100 keer te voorkomen (en beter).
Tjaa.. dat vraag ik mezelf ook af, ik heb de database niet zelf gemaakt.
Oei Erwin,

Een update met een left join? Ik vraag me af of het kan.

Eigenlijk kan je gewoon beter stellen dat je nooit joins moet gebruiken in write query's
Ja Ger, het kan, zelf getest voor ik dit plaatste! Beide tabellen worden geupdate.
Ger, Zou je je antwoord kunnen toelichten? Bij een genormaliseerde database zal het niet (snel) nodig zijn, maar waarom zou het 'not done' zijn?
@Erwin

Wat als er in de tweede tabel geen matchend record gevonden wordt?

@Michael

Omdat één vergissing er toe kan leiden, dat je gegevens wijzigt of wist die niet gewijzigd of gewist zouden moeten worden.
Ik gebruik zelf bij uitzondering ook wels een join update, maar alleen daar waar het geen kwaad kan (lees in een testomgeving).
Simpel ,je kent het vershil tussen een LEFT JOIN en een INNER JOIN. Dus bij een LEFT JOIN wordt de tabel wel geupdate als er in de andere tabel geen match is, bij een INNER JOIN wordt er in dat geval niets geupdate.

Wat betreft je opmerking over vergissingen, dat is natuurlijk je eigen verantwoordelijkheid. Doe je het los van elkaar dan krijg je weer andere zaken waar je over na moet gaan denken, bijvoorbeeld dat de ene update wel lukt en de andere niet. Naast overigens het feit dat ook dan je te veel of te weinig records kunt updaten.

Om eerlijk te zijn zie ik het grote bezwaar dus niet.

Reageren