Avatar billede pixelshade_dk Nybegynder
28. januar 2007 - 00:12 Der er 3 kommentarer

Update inner join

Hvordan updaterer jeg "session_id" med en kendt "værdi" i alle 3 tabeller i et sqlkald?

Neders ses mit update-kald. Jeg får ikke nogen fejl når jeg kører den, men data bliver heller ikke ændret i db'en... Hvad har jeg misforstået?


(mySQL v. 5.x, må evt. også virke i 4.x)
(Table engine = innoDB)


Ordre-tabel:
session_id
blabla


Kunde-tabel:
session_id
blabla


Antal-tabel: <-- flere rækker med samme session_id
session_id
blabla


Update-kald:
strSQL45 = "UPDATE kunde INNER JOIN (ordre INNER JOIN antal ON ordre.ordre_id = antal.session_id) ON kunde.kunde_id = ordre.kunde_id SET antal.session_id = '" & strOrdreID & "',"
strSQL45 = strSQL45 & " kunde.session_id = '" & strOrdreID & "',"
strSQL45 = strSQL45 & " ordre.session_id = '" & strOrdreID & "'"
strSQL45 = strSQL45 & " WHERE ordre.session_id = '" & strSessionID & "'"


På forhånd tak for hjælpen.
Avatar billede erikjacobsen Ekspert
28. januar 2007 - 00:17 #1
Det plejer man ikke at gøre. Brug 3 sql-sætninger, pakket ind i en transaktion: http://dev.mysql.com/doc/refman/5.0/en/transactional-commands.html
Avatar billede pixelshade_dk Nybegynder
28. januar 2007 - 00:34 #2
Nu kan det være jeg spørger dumt men hvorfor en "transaktion med 3 sqls".
Jeg troede man skulle holde sig til så få sqls hvis muligt?
Avatar billede erikjacobsen Ekspert
28. januar 2007 - 00:52 #3
Jeg kan ikke give dig et kursus i databaseteori og -praksis her, men det står vel i det link jeg har anført.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester