/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Java - MySQL - flytte data fra én tabel ti~
Fra : Joergen Ramskov


Dato : 29-06-01 10:45

Jeg har brug for at flytte nogle data fra en tabel til en anden.

ex. jeg har en database med bla. følgende tabeller: user og user_data.
user indeholder en række default værdier (i et vilkårligt antal
rækker) altså en template/skabelon. Hver gang en bruger vil lave en ny
"model" baseret på denne template, skal de fleste data fra user
kopieres over i user_data Herefter kan brugeren rette i og gemme disse
data for senereat kunne hente dem frem igen.

Mit foreløbige konklusion er at jeg bliver nødt til at køre select
statement på user tabellen, gemme disse data midlertidigt (i en
vector?), og derefter køre en insert statement på user_data.

Det er vel ikke muligt at gøre det udelukkende vha. sql, er det? Andre
metoder der er nemmere?

Jeg benytter mm.mysql JDBC driveren.


Joergen - Folding for the Cause!
http://www.teameggroll.org/

 
 
Jakob Møllerhøj (29-06-2001)
Kommentar
Fra : Jakob Møllerhøj


Dato : 29-06-01 12:33



> Jeg har brug for at flytte nogle data fra en tabel til en anden.
>
> ex. jeg har en database med bla. følgende tabeller: user og user_data.
> user indeholder en række default værdier (i et vilkårligt antal
> rækker) altså en template/skabelon. Hver gang en bruger vil lave en ny
> "model" baseret på denne template, skal de fleste data fra user
> kopieres over i user_data Herefter kan brugeren rette i og gemme disse
> data for senereat kunne hente dem frem igen.
>
> Mit foreløbige konklusion er at jeg bliver nødt til at køre select
> statement på user tabellen, gemme disse data midlertidigt (i en
> vector?), og derefter køre en insert statement på user_data.
>
> Det er vel ikke muligt at gøre det udelukkende vha. sql, er det? Andre
> metoder der er nemmere?
>
> Jeg benytter mm.mysql JDBC driveren.
>
>
> Joergen - Folding for the Cause!
> http://www.teameggroll.org/

Du kan benytte dig af følgende SQL-statement til kopiering af tabeller:
"SELECT * INTO [navnet_på_den_nye_tabel] FROM navnet_på_template_tabellen;"

Jakob Møllerhøj



Joergen Ramskov (29-06-2001)
Kommentar
Fra : Joergen Ramskov


Dato : 29-06-01 13:47

On Fri, 29 Jun 2001 13:32:33 +0200, "Jakob Møllerhøj"
<jackd@vip.cybercity.dk> wrote:

>Du kan benytte dig af følgende SQL-statement til kopiering af tabeller:
>"SELECT * INTO [navnet_på_den_nye_tabel] FROM navnet_på_template_tabellen;"

Ok, problemet er at de 2 tabeller ikke er helt ens, dvs. det er ikke
alle kolonner jeg skal have flyttet over samt der er et felt i den nye
tabel, der skal udfyldes med data fra et felt i en helt tredje tabel
(skal bruges til at identificere hvem dataene tilhører).

Undskyld at jeg ikke fik det forklaret i første post.


Joergen - Folding for the Cause!
http://www.teameggroll.org/

Joergen Ramskov (29-06-2001)
Kommentar
Fra : Joergen Ramskov


Dato : 29-06-01 13:54

On Fri, 29 Jun 2001 14:47:05 +0200, Joergen Ramskov
<t74fdbg001@sneakemail.com> wrote:

>>Du kan benytte dig af følgende SQL-statement til kopiering af tabeller:
>>"SELECT * INTO [navnet_på_den_nye_tabel] FROM navnet_på_template_tabellen;"
>
>Ok, problemet er at de 2 tabeller ikke er helt ens, dvs. det er ikke
>alle kolonner jeg skal have flyttet over samt der er et felt i den nye
>tabel, der skal udfyldes med data fra et felt i en helt tredje tabel
>(skal bruges til at identificere hvem dataene tilhører).

Det går vist ikke så godt for mig i dag - den tredje tabel ligger i en
anden database (med oversigt over brugere og de "modeller" de har
lavet). Jeg har den liggende i en variabel (model_Index).


Joergen - Folding for the Cause!
http://www.teameggroll.org/

Carsten (29-06-2001)
Kommentar
Fra : Carsten


Dato : 29-06-01 13:58

"Joergen Ramskov" <t74fdbg001@sneakemail.com> wrote in
message news:iqsojtcsoed75mq5v4fp75f00s24vvkhk8@4ax.com...
> On Fri, 29 Jun 2001 13:32:33 +0200, "Jakob Møllerhøj"
> <jackd@vip.cybercity.dk> wrote:
>
> >Du kan benytte dig af følgende SQL-statement til kopiering af tabeller:
> >"SELECT * INTO [navnet_på_den_nye_tabel] FROM
navnet_på_template_tabellen;"
>
> Ok, problemet er at de 2 tabeller ikke er helt ens, dvs. det er ikke
> alle kolonner jeg skal have flyttet over samt der er et felt i den nye
> tabel, der skal udfyldes med data fra et felt i en helt tredje tabel
> (skal bruges til at identificere hvem dataene tilhører).

Ahhh, jamen så er mit forslag jo lige i øjet. Det skal bare præciseres lidt:

insert into [ny_tabel]
select two.felt1, two.felt2, three.felt1,'static value',trunc(sysdate)
from [tabel_2 two], [tabel_3] three
where (two.felt1 = three.felt1)....

where-clause'n skal selvfølgelig matches rigtigt op, så du ikke får
flere rækker med i dit join end der skal puttes i den nye tabel.

Carsten




Joergen Ramskov (29-06-2001)
Kommentar
Fra : Joergen Ramskov


Dato : 29-06-01 14:06

On Fri, 29 Jun 2001 14:58:19 +0200, "Carsten" <carjak@wanadoo.dk>
wrote:

>Ahhh, jamen så er mit forslag jo lige i øjet. Det skal bare præciseres lidt:
>
>insert into [ny_tabel]
>select two.felt1, two.felt2, three.felt1,'static value',trunc(sysdate)
>from [tabel_2 two], [tabel_3] three
>where (two.felt1 = three.felt1)....

Hvad er betyder "trunc(sysdate)"?


Joergen - Folding for the Cause!
http://www.teameggroll.org/

Joergen Ramskov (29-06-2001)
Kommentar
Fra : Joergen Ramskov


Dato : 29-06-01 14:14

On Fri, 29 Jun 2001 14:58:19 +0200, "Carsten" <carjak@wanadoo.dk>
wrote:
>from [tabel_2 two], [tabel_3] three

Mener du ikke:
from [tabel_2 two], [tabel_3 three]

eller måske:
from [tabel_2.two], [tabel_3.three]

?




Joergen - Folding for the Cause!
http://www.teameggroll.org/

Carsten (29-06-2001)
Kommentar
Fra : Carsten


Dato : 29-06-01 14:30

"Joergen Ramskov" <t74fdbg001@sneakemail.com> wrote in
message news:smvojt86mnievipron9j9ro1ss1e0b0s6j@4ax.com...
> On Fri, 29 Jun 2001 14:58:19 +0200, "Carsten" <carjak@wanadoo.dk>
> wrote:
> >from [tabel_2 two], [tabel_3] three
>
> Mener du ikke:
> from [tabel_2 two], [tabel_3 three]
>
> eller måske:
> from [tabel_2.two], [tabel_3.three]

Nej, jeg mener "from tabel_2 two, tabel_3 three". "tabel_2" udskiftes med
navnet på din "anden tabel" og "tabel_3" udskiftes med navnet på "en helt
tredie tabel". "two" og "three" bliver så SQL-aliases for disse tabeller,
jvf. mine select-felter.

Trunc(sysdate) er en Oracle ting. Den returnerer dags dato og trunc klarer
så at fjerne tidspunktet fra datoen. Det bruges ofte til at dato-stemple
operationer i f.eks. et "last modified" felt i tabellerne.

Carsten

P.S. Hvis du vil have en fuld select (med selvopfundne kolonne-navne):

insert into USERS_NEW
select TWO.fullname, TWO.loginname, THREE.lastlogin, 'Created by SQL'
from USERS_SKABELON TWO, LOGIN_DATA THREE
where (TWO.loginname = THREE.loginname)

(store og små bogstaver er ligegyldige, men her er tabeller og aliases
skrevet med store bogstaver)





Esben Mose Hansen (29-06-2001)
Kommentar
Fra : Esben Mose Hansen


Dato : 29-06-01 14:38

Carsten wrote:

[...]

> Trunc(sysdate) er en Oracle ting. Den returnerer dags dato og trunc klarer
> så at fjerne tidspunktet fra datoen. Det bruges ofte til at dato-stemple
> operationer i f.eks. et "last modified" felt i tabellerne.


ok, det er rimeligt sort i forhold til CURRENT DATE / CURRENT TIMESTAMP (DB/2). Jeg troede egentligt at SQL var standardiliseret i vore dage?


mvh. Esben




Joergen Ramskov (29-06-2001)
Kommentar
Fra : Joergen Ramskov


Dato : 29-06-01 15:00

On Fri, 29 Jun 2001 15:30:17 +0200, in dk.edb.programmering.java you
wrote:

>Trunc(sysdate) er en Oracle ting. Den returnerer dags dato og trunc klarer
>så at fjerne tidspunktet fra datoen. Det bruges ofte til at dato-stemple
>operationer i f.eks. et "last modified" felt i tabellerne.

Ok, jeg får en fejl hvis jeg tilføjer den.

Jeg har også fået det til at fungere - tak for hjælpen, det gør mit
arbejde meget nemmere...og helt sikkert også applikationen
hurtigere...


Joergen - Folding for the Cause!
http://www.teameggroll.org/

Carsten (29-06-2001)
Kommentar
Fra : Carsten


Dato : 29-06-01 13:51

"Jakob Møllerhøj" <jackd@vip.cybercity.dk> wrote in
message news:9hhouf$2mbu$1@news.cybercity.dk...
> > Mit foreløbige konklusion er at jeg bliver nødt til at køre select
> > statement på user tabellen, gemme disse data midlertidigt (i en
> > vector?), og derefter køre en insert statement på user_data.
> > Det er vel ikke muligt at gøre det udelukkende vha. sql, er det?
>
> Du kan benytte dig af følgende SQL-statement til kopiering af tabeller:
> "SELECT * INTO [navnet_på_den_nye_tabel] FROM
navnet_på_template_tabellen;"
>

Den sidste der kendte jeg ikke. Er den specifik for mySQL ?
Jeg ville have benyttet en:

insert into [table]
select * from [compatible table]
where (something is true)

Carsten




Jakob Møllerhøj (29-06-2001)
Kommentar
Fra : Jakob Møllerhøj


Dato : 29-06-01 14:53


"Carsten" <carjak@wanadoo.dk> wrote in message
news:9hhtjt$b7d$1@news.inet.tele.dk...
> "Jakob Møllerhøj" <jackd@vip.cybercity.dk> wrote in
> message news:9hhouf$2mbu$1@news.cybercity.dk...
> > > Mit foreløbige konklusion er at jeg bliver nødt til at køre select
> > > statement på user tabellen, gemme disse data midlertidigt (i en
> > > vector?), og derefter køre en insert statement på user_data.
> > > Det er vel ikke muligt at gøre det udelukkende vha. sql, er det?
> >
> > Du kan benytte dig af følgende SQL-statement til kopiering af tabeller:
> > "SELECT * INTO [navnet_på_den_nye_tabel] FROM
> navnet_på_template_tabellen;"
> >
>
> Den sidste der kendte jeg ikke. Er den specifik for mySQL ?
> Jeg ville have benyttet en:
>
> insert into [table]
> select * from [compatible table]
> where (something is true)
>
> Carsten
>
Næ nej, den er ikke specifik for mySQL, den virker sågar under MS Access

Jakob Møllerhøj



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste