SQL inser into select-el +adatok

SQL inser into select-el +adatok
2009-08-24T16:58:21+02:00
2009-08-24T17:47:48+02:00
2022-11-14T19:30:41+01:00
rhn
Sziasztok, access +mssql projectben elakadtam.Kérdésem a következő:

Adottak T1 illetve T2 táblák. Ezekben vannak a1,a2,a3 oszlopok (T1-ben),míg b1,b2,b3 oszlopok a T2-ben. Kedves user adatokat visz föl, ha F1 űrlapot használja akkor T1-be, ha F2-t, akkor T2-be. Az űrlapok nincsenek "összedrótozva" a táblával, hanem van három mező, utána egy gomb, gomb megynyomására lefut egy "currentproject.connection execute" ami berakja "INSERT INTO T1"-el az adatokat. Ugyan ez megvan F2-vel T2-re.

A gondom az, hogy létezik egy T3, ami a mozgásokat tárolná, valahogy a1,a2,a3,b3,c3,c4,c5 formában. Arra akarok utalni, hogy minden egyes rekord rögzítésekor a T1 táblába, a rekord adatait át kéne másolni a T3-ba. Az addig rendben van, hogy egy "INSERT INTO T3(a1,a2,a3) SELECT a1,a2,a3 from T1" berakja az adatokat. A gondom az, hogy szeretnék értékeket adni c3,c4,illetve c5 celláknak is. (ezek többnyire függvények, amelyek lekérdezik az aktuális időt, a usert, a gépnevet, stb)

azt nem tudom, hogy mi a helyes szintaktika, vagy létezik-e ilyen megoldás pl, hogy
c3=usernev() c4=date() c5=gepip() INSERT INTO T3 (a1,a2,a3,c3,c4,c5) SELECT (a1,a2,a3) from T1 , c3,c4,c5

A bajom az, hogy ahány példát találtam Access manualban meg a neten, ott a SELECT utasítás mindig annyi mezőt kérdezett le, ahány mezőt be kellett illeszteni. Van arra valami mód, hogy a SELECT által lekérdezett 3 mezőhöz hozzáadjak még 3-at (vagy 4-et, vagy akármi)? Főleg úgy, hogy ha a T1-be történik beírás, akkor T3-ban b3 mezőnek üresen kell maradnia! Vagy próbáljam meg triggerrel AFTERINSERT eseményre írni egy UPDATE-et?

Köszönöm a segítséget!
Mutasd a teljes hozzászólást!
INSERT INTO T3 (a1,a2,a3,c3,c4,c5) SELECT (a1,a2,a3,'fix szöveges érték',34,'másik fix szöveges érték',42) from T1

34 és 42 tetszőleges fix számok. A lényeg az, hogy értékként mező helyett bármilyen tetszőleges fix értéket megadhatsz, éppen úgy, mint egy hagyományos select-ben. Sőt, ott még T-SQL-es függvények is lehetnek, pl. ami a dátumot adja vissza...
Mutasd a teljes hozzászólást!

  • Valamiért nem működik. Így néz ki az én parancsom:

    INSERT INTO tMozgasok (mtid,mtdbbe,mrhely,mjelleg) select (tid,btdb,btrhely,'mozgas')from tBetermekek

    Összevetettem a te mintáddal, elméletileg nem látok hibát, de ezt adja válaszként:
    Msg 102, Level 15, State 1, Line 1 Incorrect syntax near ','.

    Ha nem rakom oda az INSERTBE az mjelleg-et, valamint a SELECT-be a 'mozgas'-t, akkor működik.
    Mutasd a teljes hozzászólást!
  • És ha becsomagolod, akkor se jó?

    INSERT INTO tMozgasok (mtid,mtdbbe,mrhely,mjelleg) select * from (select tid,btdb,btrhely,'mozgas' as akarmi from tBetermekek)
    Mutasd a teljes hozzászólást!
  • Nem. Válasz ugyan az.Illetve majdnem :) :

    Msg 102, Level 15, State 1, Line 4 Incorrect syntax near ')'

    Próbáltam még picit "csomagolni":

    INSERT INTO tMozgasok (mtid,mtdbbe,mrhely,mjelleg) select * from (select (tid,btdb,btrhely,'mozgas' as akarmi) from tBetermekek)

    erre, ugyan az a hiba, mint a legelső esetben: " , "-vel van problémája.

    MOST ÍGY működik:


    INSERT INTO tMozgasok (mtid,mtdbbe,mrhely,mjelleg) select tid, btdb, btrhely, 'ertek' from tBetermekek

    köszönöm a segítséget! Gyakorlatilag az első hsz-ed jó volt, csak nem kellett a SELECT utáni zárójel. Próbáltam lefuttatni csak azt a SELECT részt, arra is hibát adott, majd addig kozmetikáztam, ameddig az önmagában lefutott. Utána beraktam az insert után, és működött.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd