[SQL] SQL optimaliseren

Pagina: 1
Acties:

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 30-11 10:16
In onderstaande SQL heb ik een INSERT TRIGGER waar ik eerst de UserName bepaal, en dan een INSERT uitvoer. Is het mogelijk om de SELECT voor de UserName in de 2e SELECT te verwerken?
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DECLARE @UserName varchar(25)

SELECT
    @UserName = Users.UserName
FROM
    Users,
    Inserted
WHERE
    Users.UserID = Inserted.CreatorUserID

INSERT INTO
    ChangeLog
    (
    UserName,
    Action,
    NewValues
    )
SELECT
    @UserName,
    'New Rack',
    'Rack: ' + Inserted.Rack + '.' + Location.Location
FROM
    Inserted,
    Location,
    Row,
    Rack
WHERE
    Row.LocationID = Location.LocationID
AND
    Rack.RowID = Row.RowID
AND
    Rack.RowID = Inserted.RowID
AND
    Rack.Rack = Inserted.Rack

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
kun je niet dit doen?

SQL:
1
2
3
4
5
6
7
8
9
10
11
insert into
    ChangeLog 
    ( 
    UserName, 
    Action, 
    NewValues 
    ) 
select
    (select username from blablabla),
   'New Rack',
   'Rack: ' ..........


let wel, het deel tussen haakjes mag maar 1 resultaat geven....

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 30-11 10:16
Edwardvb schreef op zondag 13 mei 2007 @ 12:37:
kun je niet dit doen?

SQL:
1
2
3
4
5
6
7
8
9
10
11
insert into
    ChangeLog 
    ( 
    UserName, 
    Action, 
    NewValues 
    ) 
select
    (select username from blablabla),
   'New Rack',
   'Rack: ' ..........


let wel, het deel tussen haakjes mag maar 1 resultaat geven....
Soms zijn de oplossingen makkelijker dan je denkt... Bedankt!

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Verwijderd

Wauw man, ik ben sort-of beginnend in sql maar stored procedures en declaraties kende ik nog niet! wat ik me afvraag uit het codevoorbeeld van swerfer of
SQL:
1
    (select username from blablabla), 

geen limit 1 benodigd heeft (of iig handig kan zijn als fault-checker?). Welke term kan ik aan dit soort statements geven?
En misschien wel de belangrijkste vraag: wanneer is het declareren van variabelen of functies écht nodig?
:)

  • xos
  • Registratie: Januari 2002
  • Laatst online: 25-11 17:08

xos

Verwijderd schreef op zondag 13 mei 2007 @ 21:43:
Wauw man, ik ben sort-of beginnend in sql maar stored procedures en declaraties kende ik nog niet! wat ik me afvraag uit het codevoorbeeld van swerfer of
SQL:
1
    (select username from blablabla), 

geen limit 1 benodigd heeft (of iig handig kan zijn als fault-checker?). Welke term kan ik aan dit soort statements geven?
En misschien wel de belangrijkste vraag: wanneer is het declareren van variabelen of functies écht nodig?
:)
Jupz, dat moet eigenlijk. Overgens is er geen garantie zonder ordering welke username wordt geselecteerd als eerste. Nog beter zou zijn om een join te maken en meerdere records tegelijkertijd te inserten.

[ Voor 6% gewijzigd door xos op 13-05-2007 22:12 ]