/ 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
[mySQL] Avanceret INSERT
Fra : Jesper Stocholm


Dato : 18-10-02 16:33

Jeg kunne godt tænke mig at lave følgende SQL til min mySQL-database:

INSERT INTO
table1 (strHeadline,txtDescription,intAuthorId)
VALUES
('dette er en overskrift','dette er en beskrivelse',
(SELECT intAuthorId FROM table2 where strEmail = 'email@email.dk')
);

Men - alas - det virker ikke - sikkert fordi mySQL ikke understøtter nestede
SELECTs i den version jeg har adgang til.

Er der en måde at komme udenom det på - eller må jeg bide i det sure æble og
eksplicit spørge efter intAuthorId inden jeg indsætter noget nyt ?



--
Jesper Stocholm
http://stocholm.dk
Overvejer du at købe bøger ved saxo.dk ? Kig først på
http://www.firmcheck.dk/Info.asp?website=www.saxo.dk

 
 
Mads Lie Jensen (18-10-2002)
Kommentar
Fra : Mads Lie Jensen


Dato : 18-10-02 18:27

On Fri, 18 Oct 2002 15:32:33 +0000 (UTC), Jesper Stocholm
<jespers@stocholm.invalid> wrote:

>Jeg kunne godt tænke mig at lave følgende SQL til min mySQL-database:
>
>INSERT INTO
> table1 (strHeadline,txtDescription,intAuthorId)
>VALUES
> ('dette er en overskrift','dette er en beskrivelse',
> (SELECT intAuthorId FROM table2 where strEmail = 'email@email.dk')
> );
>
>Men - alas - det virker ikke - sikkert fordi mySQL ikke understøtter nestede
>SELECTs i den version jeg har adgang til.
>
>Er der en måde at komme udenom det på - eller må jeg bide i det sure æble og
>eksplicit spørge efter intAuthorId inden jeg indsætter noget nyt ?

Ja, iflg. manualen gør det det forkert, den siger:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...

Så du kan bruge noget i stil med

INSERT INTO
table1 (strHeadline,txtDescription,intAuthorId)
SELECT
   'dette er en overskrift',
   'dette er en beskrivelse',
   intAuthorId
FROM table2 WHERE strEmail = 'email@email.dk';

....husk at ovenstående er helt og aldeles utestet

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
- nu med link til egne billeder fra Aero-koncerten
med Jean Michel Jarre

Jesper Stocholm (19-10-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 19-10-02 14:26

Mads Lie Jensen wrote :

> On Fri, 18 Oct 2002 15:32:33 +0000 (UTC), Jesper Stocholm
> <jespers@stocholm.invalid> wrote:

> Ja, iflg. manualen gør det det forkert, den siger:
>
> INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
> [INTO] tbl_name [(col_name,...)]
> SELECT ...
>
> Så du kan bruge noget i stil med
>
> INSERT INTO
> table1 (strHeadline,txtDescription,intAuthorId)
> SELECT
> 'dette er en overskrift',
> 'dette er en beskrivelse',
> intAuthorId
> FROM table2 WHERE strEmail = 'email@email.dk';
>
> ...husk at ovenstående er helt og aldeles utestet

det kan godt være, at det ikke var testet ... men det virker nu
upåklageligt ...



--
Jesper Stocholm
http://stocholm.dk
Overvejer du at købe bøger ved saxo.dk ? Kig først på
http://www.firmcheck.dk/Info.asp?website=www.saxo.dk

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste