Avatar billede mccookie Seniormester
18. februar 2014 - 10:30 Der 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.....

Er der nogen der kan give et flue?
18. februar 2014 - 15:22 #1
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)?
Avatar billede mccookie Seniormester
18. februar 2014 - 15:32 #2
Hej Christian>>

Der kommer noget mere brugbart her:

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!
18. februar 2014 - 16:38 #3
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.
Avatar billede mccookie Seniormester
18. februar 2014 - 16:53 #4
Hej Christian

Troede ikke det så simpelt, men havde tænkt det næsten samme vej....

Men det må kun berøre disse rækker:

(UserGroups.GroupName LIKE '%beboer%') og det ligger i den tabel, derfor skal den med...

De 2 eksempler er bare for vise hvor jeg ville hen.....
18. februar 2014 - 19:14 #5
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 = ''
Avatar billede mccookie Seniormester
18. februar 2014 - 21:09 #6
Hej Christian

Jeg får følgende fejl:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'JOIN'.
19. februar 2014 - 00:13 #7
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%')
Avatar billede arne_v Ekspert
20. februar 2014 - 03:27 #8
maaske

... AND FKUserGroup IN (...
20. februar 2014 - 06:06 #9
#8, ja nu du siger det, det har du nok ret i.
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