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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
sql-problem
Fra : Jeppe Vesterbæk


Dato : 07-05-02 15:55

Ja, så er jeg stødt på endnu et lille spørgsmål.

Når man bruger INSERT ... SELECT Syntax, kan andre værdier end fra SELECT så
ikke indsættes i tabellen.

ex INSTERT INTO test (t1, t2) VALUES (

(SELECT t1 from test2 WHERE id=22),

'2');

dvs hvor test.t1 bliver sat til samme værdi som (test2.t1 med id=22 ) og
test.t2 "bare" bliver sat til 2

/vh Jeppe



 
 
Jens Gyldenkærne Cla~ (07-05-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-05-02 16:03

"Jeppe Vesterbæk" <jeppeojeppe_ingenspamtak_@hotmail.com> skrev:

> Når man bruger INSERT ... SELECT Syntax, kan andre værdier end
> fra SELECT så ikke indsættes i tabellen.

Jo.

> dvs hvor test.t1 bliver sat til samme værdi som (test2.t1 med
> id=22 ) og test.t2 "bare" bliver sat til 2

SELECT test2.t1, 2

....giver et recordsæt med t1 parret med værdien 2.

I en INSERT-sætning bliver det så:

INSERT INTO tabel (felt1, felt2)
   (SELECT test2, 2)


Du kan på samme måde få f.eks. en dato ind i tabellen:

SELECT feltnavn, GETDATE() as dato ...


--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)

Jens Gyldenkærne Cla~ (07-05-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-05-02 16:04

"Jens Gyldenkærne Clausen" <jc@dmf.dk> skrev:

>> Når man bruger INSERT ... SELECT Syntax, kan andre værdier end
>> fra SELECT så ikke indsættes i tabellen.
>
> Jo.

Pedanteri: Det er sådan set kun værdier fra din SELECT der kan
indsættes. Men du kan - som beskrevet - inkludere faste værdier og
udtryk i denne SELECT.

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)

Jeppe Vesterbæk (07-05-2002)
Kommentar
Fra : Jeppe Vesterbæk


Dato : 07-05-02 16:14

Mange tak for det hurtige og gode svar Jens. Dejligt at du tager dig tid til
at hjælpe andre.

/Jeppe



Jeppe Vesterbæk (08-05-2002)
Kommentar
Fra : Jeppe Vesterbæk


Dato : 08-05-02 01:09

Jeg har lige et lille sidespørgsmål.

Min sql-kommando ser således ud (fra java):

String strSQL="INSERT INTO bil_tid (bil_id, afgangstid, ventetid) " +
"SELECT bil_id, " + a.afgangstid + ", " + a.ventetid +
" FROM bil " +
"WHERE bane_id='" + a.refKo.refVejbane.baneId + "' " +
"AND ankomsttid='" + a.ankomsttid + "'";
(bane_id og ankomsttid er primærnøgle i tabellen bil)

Jeg har lidt (læs: meget) på fornemmelsen, at denne query tager meget lang
tid at udføre.
Der skal udføres omkring 70.000 af ovenstående forespørgsler. Er der en
anden og hurtigere måde?

/Jeppe



Jeppe Vesterbæk (08-05-2002)
Kommentar
Fra : Jeppe Vesterbæk


Dato : 08-05-02 01:42

> Der skal udføres omkring 70.000 af ovenstående forespørgsler. Er der en
> anden og hurtigere måde?

Jeg har oprettet et index med bane_id og ankomsttid. Dette hjalp betydeligt.

Andre forslag er naturligvis stadig velkomne (-:

/Jeppe



Thorbjørn Ravn Ander~ (08-05-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 08-05-02 03:23

"Jeppe Vesterbæk" <jeppeojeppe_ingenspamtak_@hotmail.com> writes:

> > Der skal udføres omkring 70.000 af ovenstående forespørgsler. Er der en
> > anden og hurtigere måde?
>
> Jeg har oprettet et index med bane_id og ankomsttid. Dette hjalp betydeligt.
>
> Andre forslag er naturligvis stadig velkomne (-:

Kig på om et PreparedStatement giver dig yderligere gevinst.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Nis Jorgensen (08-05-2002)
Kommentar
Fra : Nis Jorgensen


Dato : 08-05-02 09:36

On Wed, 8 May 2002 02:09:23 +0200, "Jeppe Vesterbæk"
<jeppeojeppe_ingenspamtak_@hotmail.com> wrote:

>
>Min sql-kommando ser således ud (fra java):
>
>String strSQL="INSERT INTO bil_tid (bil_id, afgangstid, ventetid) " +
> "SELECT bil_id, " + a.afgangstid + ", " + a.ventetid +
>" FROM bil " +
> "WHERE bane_id='" + a.refKo.refVejbane.baneId + "' " +
> "AND ankomsttid='" + a.ankomsttid + "'";
>(bane_id og ankomsttid er primærnøgle i tabellen bil)

Ovenstaaende er ikke en sql-kommando. Det er en java-kommando. Det er
betydeligt nemmere for andre at saette sig ind i din SQL, hvis du
sender den kommando der bliver sendt til databasen - altsaa vaerdien
af strSQL efter ovenstaaende.

--
Nis Jorgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

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

Månedens bedste
Årets bedste
Sidste års bedste