01. april 2020 - 12:47Der er
1 kommentar og 2 løsninger
Opdater en tabel med værdier fra en anden tabel.
Jeg har en tabel1 med bruger-oplysninger, og en tabel2 med opslag, som brugerne har lavet. Nogle gange (og kun nogle gange) sker det, at et opslag oprettes i tabel2 uden eks postnummer for brugeren. Jeg har brug for at finde de poster, hvor eks postnummer mangler og efterfølgende opdatere dem med postnummeret fra tabel1. I begge tabeller kan jeg bruge ’email’ som reference. Første del er nem nok med: if($stmt=$mysqli->prepare("SELECT `email` FROM `annoncer` WHERE `postnr`='0' ")) { $stmt->execute(); $stmt->bind_result($email); while($stmt->fetch()) { //her ville jeg gerne lave opdateringen af postnummer, de steder det mangler, men det lader sig ikke rigtigt gøre } $stmt->close(); }
Hvordan kommer jeg videre med anden del af projektet: at opdatere den aktuelle post i tabel2"?
Jeg ville stærkt overveje at lave logikken i PHP med den SELECT og så en SELECT og en UPDATE per problem. Det må jo være en engangs ting, så performance er ligegyldig.
Men vil du bruge SQL, så måske:
UPDATE annoncer SET postnr = (SELECT MAX(postnr) FROM brugere WHERE brugere.email = announcer.email) WHERE postnr = 0
Du *SKAL* teste grundigt på test data inden dy fyrer den af på de rigtige data.
SELECT email FROM annoncer WHERE postnr = 0 while { SELECT postnr FROM brugere WHERE email = ? UPDATE annoncer SET postnr = ? WHERE email = ? }
Den er nemmere at teste med UPDATE udkommenteret og lidt debug print for at se hvad der sker.
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
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.