18. februar 2014 - 10:30Der er
8 kommentarer og 1 løsning
Opdater en tabel med data fra egen tabel hvis er opfyldt
Hej,
Jeg har 2 tabeller:
User (tabel) Navn Nr Kode Grpnr
Usergrp (tabel) Grpnr Grpnavn
Jeg har lavet en forespørgelse, som henter rækker der er i en bestemt gruppe og uden kode. Denne del går rigtig fint, men jeg vil gerne opdatere disse tomme felter - Heller ikke noget problem. Problemet er at jeg vil gerne opdatere feltet med en substring(nr,1,4), hvor jeg henter data for hver af de rækker jeg hiver frem i første del.....
Det er jeg vist for tumpet til at forstå efter din beskrivelse. Fortæl noget mere. Du kunne for eksempel vise forespørgslen, det kunne måske give en ide om hvor du vil hen. Hvilke tomme felter er det du vil update med en substreng af nr (eller Nr)?
SELECT Users.FirstName, Users.LastName, Users.Address, Users.WebPassword, UserGroups.GroupName AS Expr1, UserGroups.PkGroupNumber FROM UserGroups INNER JOIN Users ON UserGroups.PkGroupNumber = Users.FkUserGroup WHERE (UserGroups.GroupName LIKE '%beboer%') AND (Users.WebPassword = '')
Denne streng returnere x antal poster, hvor der ikke er sat et WebPassword. Dem kunne jeg godt tænke mig at opdatere med noget ala dette:
SELECT LastName, SUBSTRING(LastName,5,4) as kode FROM Users
Hvor en substring af LastName udgør koden....
Håber det viser lidt bedre, hvilke hensigter jeg har!
Du har en tabel Users med blandt andet feltene LastName og WebPassword. Users med tomt password vil du give et password der er lig med en substring af LastName. Det skulle kunne klares som følger (ikke testet, da jeg ikke har MS SQL installeret):
UPDATE Users SET WebPassword = SUBSTRING(LastName, 5, 4) WHERE WebPassword = ''
Har jeg forstået problemstillingen korrekt? I så fald er der ingen grund til at joine med UserGroups for at update WebPassword.
Kun password til de users der tilhører grupper LIKE beboer. Ok, så prøv denne:
UPDATE Users JOIN UserGroups ON Users.FKUsersGroup = UserGroups.PkGroupNumber WHERE GroupName LIKE '%beboer%' SET WebPassword = SUBSTRING(LastName, 5, 4) WHERE WebPassword = ''
Jamen måske kan det ikke lade sig gøre at update sådan en join. Jeg prøvede det af i mysql og fandt frem til den følgende kode. Prøv at se, om det også virker i MS SQL:
UPDATE Users SET WebPassword = SUBSTRING(LastName, 5, 4) WHERE WebPassword = '' AND FKUserGroup = (SELECT PKGroupNumber FROM UserGroups WHERE GroupName LIKE '%beboer%')
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.