Avatar billede riefart Seniormester
01. april 2020 - 12:47 Der 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"?
Avatar billede arne_v Ekspert
01. april 2020 - 14:51 #1
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.
Avatar billede riefart Seniormester
01. april 2020 - 16:34 #2
Hvordan skal det se ud hvis jeg laver logikken i PHP?
Iøvrigt virker det perfekt med den UPDATE, du foreslår. Tommel op!
Avatar billede arne_v Ekspert
02. april 2020 - 01:43 #3
PHP logik ville være helt triviel:

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.
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