|
| 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
| |
|
|