Avatar billede rickie Juniormester
09. maj 2003 - 09:23 Der er 23 kommentarer og
1 løsning

Insert Into statement

Hej alle Eksperter.

JEG VED IKKE OM DETTE ER DEN RIGTIGE KATEGORI MEN PRØVER ALIGEVEL?

Findes der en mulighed for, at når man laver en INSERT INTO også kan vælje WHERE.

Feks.
Persons = tabellen
Insert into Persons Fornavn where Fornamn = 'rickie'

Håber på hjælp :-)
Avatar billede fri-hash Nybegynder
09. maj 2003 - 09:25 #1
nej, INSERT indsætter en ny række i tabellen

hvis du vil indsætte en værdi i en eksisterende række skal du bruge UPDATE

f.eks.
UPDATE persons SET kolonnenavn='rickie efternavn' WHERE Fornamn='rickie'
Avatar billede eagleeye Praktikant
09. maj 2003 - 09:26 #2
Nej så er det en UPDATE du skal bruge.

http://www.w3schools.com/sql/sql_update.asp
Avatar billede pierrehusted Nybegynder
09. maj 2003 - 09:26 #3
Ja, men så skal du have data et sted fra.

Du kan f.eks. godt gøre sådan her:

INSERT INTO tabel1 (felt1, felt2)
SELECT felt1, felt2 FROM tabel2


Men hvor får du data fra ??
Avatar billede rickie Juniormester
09. maj 2003 - 09:30 #4
Det er sådan at vi har en historik som se således ud.

101 Brev
102 Nyt brev
103 Nyt brev igen
104 Nyt brev igen igen

Nu vil jeg så gerne sætte en ny kode (105) i historiken men kun på de "sager" som har/opfylder at have sidste status/kode som = 104

Er dette muligt? 2 nej og 1 ja som jeg ikke helt tror at jeg forstår :-)
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 09:35 #5
update dintabel set status=105 where status=104
Avatar billede rickie Juniormester
09. maj 2003 - 11:17 #6
Hej ericjacobsen!

Jeg vil ikke opdatere kode 104 men derimod sätte en ny kode ind (105) efter kode 104 :-)

Inden opdatering
101 Brev
102 Nyt brev
103 Nyt brev igen
104 Nyt brev igen igen

Efter odatering
101 Brev
102 Nyt brev
103 Nyt brev igen
104 Nyt brev igen igen
105 Nyt brev igen igen igen
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 11:19 #7
Ok, men der er ikke noget, der hedder "efter" i en database tabel.
Det er der kun hvis du definerer et felt, der indeholder rækkefølgen,
og laver en "SELECT ... ORDER BY ditfelt".

Mener du at der skal laves fortløbende numre: så brug autonummerering.
Avatar billede rickie Juniormester
09. maj 2003 - 11:35 #8
OK! Kan du vise et exempel på hvordan jeg så skal gøre det for jeg er ikke sikker på at jeg er helt med :-)
Det er ikke fortløbende numre. Numrerne kan være alt fra 101 - 902

Exempel
101 Brev sendt
203 Kunde ringet
201 Adresse ukendt

Nu vil jeg lave en sql som går igennem alle sager som feks har kod 201 som sidste kode og derefter sætter en ny kode/status ind.

Exempel
101 Brev sendt
203 Kunde ringet
201 Adresse ukendt
208 Overføres

Sagen er den, at jeg slet ikke ved om dette er muligt men jeg tænkte at det nok kunne være en god idé og høre her på Eksperten.

Håber at du ikke blev alt for forvirret :-)))
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 11:39 #9
Alt er muligt...

Men hvor kom tallet 208 fra. Er det meningen at det skal "stå lige under"
201?
Avatar billede rickie Juniormester
09. maj 2003 - 11:55 #10
Yeps! Talene har ingen betydelse for det er ikke de tal som jeg skal bruge - kun eksempler :-)
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 11:58 #11
Måske er det mig - men jeg forstår fortsat ikke hvad du spørger om
Avatar billede rickie Juniormester
09. maj 2003 - 12:35 #12
Jeg kan godt sende et exempel på din email hvor jeg måske bedre kan beskrive det men så skal jeg jo bruge din mailadresse.

Tak fordi du/i gider tage jer tid :-)
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 12:46 #13
Lad os klare det her - det er jo ikke kun mig der er "ekspert..."
Avatar billede rickie Juniormester
09. maj 2003 - 12:53 #14
Det er lidt svært att forklare det her. Det havde jo været bedre hvis jeg kunne vise et skærmprint af programet.

Prøver aligevel, uden billedet :-)

*    ?
011
400 Betalt Kreditor
400 Betalt Kreditor
400 Betalt Kreditor
400 Betalt Kreditor
012 Rykker 1

Det jeg nu vil lave er, at såfremt der på sagen er en sidste status som er kode 012 (Sand) så vil jeg lave en SQL som så lægger til/opretter, eller hvad det nu måtte være, en kode feks 013 Rykker 2.
Den må IKKE overskrive de koder som allerede findes der.
Jeg ved godt hvordan det virker med UPDATE funktionen men som sagt så skal det være en ny kode som lægges til :-)

Tabeller som jeg arbejder med heder HISTORIK og koden heder HISTORIK_KOD (*) og teksen som vises efter koden heder HISTORIK_KODTEXT (?).

Håber at du blev mere indsat i problemet og kan hjælpe mig.
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 13:15 #15
Næh :)

Du skal lave en ny. Så hedder det "INSERT ..." - men hvad, og hvornår,
og hvordan, det kan jeg ikke gennemskue på de oplysninger du giver mig.
Avatar billede rickie Juniormester
09. maj 2003 - 13:33 #16
Problemet er ikke at det drejer sig om en INSERT med derimod at jeg er nød til, at have en WHERE idet den kun skal lægge til en ny linje/kode hvor WHERE opfyldes.
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 13:42 #17
Jamen, det kan du ikke. Du kan med "SELECT ..." finde de poster
der kan være relevante, og ud fra det resultet lave et antal
"INSERT ..."
Avatar billede rickie Juniormester
09. maj 2003 - 13:48 #18
Ahaaaa! Hvordan gör jeg så det?

Er det:
Select from HISTORIK where HISTORIK_KOD = '012'
hmmmmm! Hvordan laver jeg så INSERT. Skal det være 2 script?

Det er jo nød til, at være et script idet jeg laver en Query.

Kan du hjælpe?
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 13:57 #19
Det er nok den Select-sætning, sådan ca.

Så løber du igennem (while), og laver en ny INSERT for hver.
Avatar billede rickie Juniormester
09. maj 2003 - 14:03 #20
Jeg tror ikke rigtigt at jeg kan finde ud af det hvis jeg skal være ærlig :-(

Kan du lave et exempel så jeg ser hvordan strukturen er opbygget og så prøve mig frem? :)
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 14:05 #21
Mnjah, måske. Hvilket scriptsprog?

Men du kan også kigge på subselects, som måske kan klare
det. Det bør man tænke på når man får lyst til at
lave sql-sætninger i et gennemløb af et recordset.
Avatar billede rickie Juniormester
09. maj 2003 - 14:12 #22
Det skal bare være almindelig SQL (Query).

Jeg prøver at undersøge videre udfra de tips jeg har fået fra dig og lukker derefter spm.

Mange tak for hjælpen allesammen :-)))
Avatar billede janus_007 Nybegynder
10. maj 2003 - 15:49 #23
Tjaa... Jeg er faktisk blevet mere forvirret af at læse alle de indlæg haha.. Men som udfra dit oprindelige spørgsmål kan jeg svare:

INSERT INTO Persons(Fornavn, Efternavn) SELECT Fornavn, Efternavn FROM historik WHERE fornavn = 'rickie'

Måske du kan bruge det...

Ellers fatter jeg heller ikke helt hvad det er du vil ;O)
Avatar billede rickie Juniormester
10. maj 2003 - 20:37 #24
Det er lige det jeg skulle.....PERFEKT!

Mange tak for hjälpen :-)))
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