Avatar billede tmouritsen Nybegynder
13. november 2001 - 20:40 Der er 7 kommentarer og
1 løsning

Insert mes opslag i forskellige tabeller

Jeg har en insert der skal hente data i to forskellige tabeller og sætte det ind.

Jeg kan gøre:
INSERT INTO <tabel1> (<attribut1>)
SELECT <attribut2> AS <attribut1> FROM <tabel2>

Nu vil jeg også tilføje <attribut3> som jeg henter fra <tabel3>
Avatar billede bennytordrup Nybegynder
13. november 2001 - 23:16 #1
INSERT INTO <Tabel1> (<Attribut1>)
SELECT X.<Attribut1>
FROM (SELECT <Attribut2> as <Attribut1>
      FROM <Tabel2>

      UNION

      SELECT <Attribut3> as <Attribut1>
      FROM <Tabel3>) AS X
Avatar billede tmouritsen Nybegynder
14. november 2001 - 08:41 #2
Jeg får kigget på det i dag, så vender jeg tilbage.
Avatar billede tmouritsen Nybegynder
14. november 2001 - 09:42 #3
Jeg skriver følgende:
INSERT INTO Grp3_log(DirFilId, BrugerId)
SELECT DirFilId, BrugerId
FROM (
  SELECT Grp3_dir_fil.Id AS DirFilId
    FROM Grp3_dir_fil WHERE Grp3_dir_fil.Dir = \'ap\' AND Grp3_dir_fil.Fil = \'\'
    UNION
    SELECT Grp3_bruger.Id AS BrugerId FROM Grp3_bruger WHERE Grp3_bruger.Bruger = \'Thomas\'
  ) AS Tmp;

Men jeg får fejlen:
Der er for få parametre. Der var ventet 2
Avatar billede bennytordrup Nybegynder
14. november 2001 - 10:25 #4
Du har jo heller ikke skrevet, som jeg anviste. Som jeg tolkede det, så var det værdier fra flere tabeller, som skulle ind i samme felt i en tabel
Avatar billede proaccess Nybegynder
14. november 2001 - 10:32 #5
Prøv så at lege med denne...  JOIN-FELT er det som \"binder\" data i de to tabeller sammen.

INSERT INTO <tabel1> (<attribut1>, <attribut2>)
SELECT <tabel2>.<attribut2>, <tabel3>.<attribut3> FROM <tabel2> INNER JOIN <tabel3> ON <tabel2>.<JOIN-FELT> = <tabel3>.<JOIN-FELT>
Avatar billede tmouritsen Nybegynder
14. november 2001 - 10:37 #6
Sagen er den at data i Grp3_dir_fil og Grp3_bruger ikke er indbyrdes forbundet, det er først i Grp3_log at der er nogle relationer.

Det betyder at jeg ikke kan sætte noget i Grp3_dir_fil og Grp3_bruger lig med hinanden.

Jeg overvejer at oprette en midlertidig tabel og lægge dataene i den, men hvordan gør man mon det???
Avatar billede proaccess Nybegynder
14. november 2001 - 10:53 #7
Så må du bruge opslag, til at finde Thomas\'s ID...

Prøv med denne:

INSERT INTO Grp3_log(DirFilId, BrugerId) SELECT Grp3_dir_fil.Id AS DirFilId, (SELECT Id FROM Grp3_bruger WHERE Bruger=\'Thomas\') AS BrugerId FROM Grp3_dir_fil WHERE Dir=\'ap\' AND Fil=\'\';
Avatar billede tmouritsen Nybegynder
21. november 2001 - 10:18 #8
Jeg har helt opgivet at gøre ovenstående og lavet det ved hjælp af flere forespørgsler
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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