MS-SQL - Werte schreiben!

  • VB.NET
  • .NET 2.0

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    MS-SQL - Werte schreiben!

    Neu

    Moin! :)
    Ich habe zwei Tabellen mit dem Namen „tblAnmeldedaten“ & „tblGuthaben“.
    Wenn jetzt Benutzer „Test“, sein Guthaben auflädt, soll dies in der „tblGuthaben“ erscheinen.
    Den INNER JOIN habe ich bereits geschrieben.
    Das Problem ist das ich in die Spalte „letzeAufladung“ einen aktuellen Wert reinschreiben möchte.
    Natürlich kenne ich „INSERT INTO“.
    Ich weiß aber nicht, wie man das in diesen Fall am besten verwendet.
    Freue mich auf eure Hilfe!
    BIG THX



    Visual Basic.NET 8o
    MS-SQL
    8o

    Neu

    @Danke, für eure Hilfe.
    Ich habs nun hinbekommen:

    SQL-Abfrage

    1. SELECT Benutzername, Guthaben,letzeAufladung
    2. FROM tblAnmeldedaten
    3. INNER JOIN tblGuthaben
    4. on tblAnmeldedaten.ID =tblGuthaben.ID
    5. where Benutzername ='Test'
    6. UPDATE [dbo].[tblGuthaben]
    7. SET letzeAufladung = GETDATE()


    edit:
    SQL Code ist fehlerhaft! ;(
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cheffboss“ ()

    Neu

    Cheffboss schrieb:

    UPDATE [dbo].[tblGuthaben]
    SET letzeAufladung = GETDATE()
    wird in alle Datensätze die aktuelle Zeit schreiben.
    Solange du nur einen Datensatz hast, wirst du es nicht merken, aber später wird dich das enttäuschen.
    Lies nochmal Post #3. beim WHERE-Statement hast du es ja auch geschafft.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Neu

    @petaod
    Danke, für deine Antwort. :)
    Du hast recht, es werden in alle Datensätze geschrieben.
    Dann habe ich mich zu früh gefreut!
    Könnte mir jemand noch Tipps geben?
    Da mir der Lösungsweg gerade nicht einfach fällt!
    ?(
    Visual Basic.NET 8o
    MS-SQL
    8o

    Neu

    Cheffboss schrieb:

    Wer weiß Rat?
    Dein UPDATE hat keinen JOIN.

    Ist dir klar, dass dein SELECT-Statement und dein UPDATE-Statement zwei völlig unterschiedliche Befehle sind, die zwar nacheinander ausgeführt werden, aber sonst keine Verbindung zueinander haben?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Neu

    @petaod
    Ich habe es nun auch herausgefunden, dass es zwei Befehle sind.
    Danke, für diese Info. :)
    Bin in MS-SQL noch ganz neu!

    @JackCimberly
    Die Syntax kenne ich, aber leider komme ich bei der WHERE-Klausel nicht weiter.
    Da ich die Infos aus einer anderen Tabelle lesen möchte!
    tblAnmeldedaten.Benutzername
    Was ist nun zu tun? ?(

    SQL-Abfrage

    1. UPDATE tblGuthaben
    2. SET letzeaufladung = GETDATE()
    3. WHERE tblAnmeldedaten.Benutzername = 'Test'

    Der mehrteilige Bezeichner 'tblAnmeldedaten.Benutzername' konnte nicht gebunden werden.
    Visual Basic.NET 8o
    MS-SQL
    8o

    Neu

    Vielen Dank. für eure Hilfe. :)
    Ich habs nun doch hinbekommen!
    Ich habe nun dazu gelernt das ein SELECT-Statement und auch ein UPDATE-Statement
    ein INNER JOIN haben kann.
    Dies habe ich in meiner Schulung nicht gelernt!

    SQL-Abfrage

    1. UPDATE tblGuthaben
    2. SET tblGuthaben.letzeAufladung = GETDATE()
    3. FROM tblGuthaben
    4. INNER JOIN tblAnmeldedaten
    5. tblAnmeldedaten on tblGuthaben.ID = tblAnmeldedaten.ID
    6. WHERE tblAnmeldedaten.Benutzername = 'Test'
    Visual Basic.NET 8o
    MS-SQL
    8o

    Neu

    Wenn das funktioniert, ist es OK.
    Ich hätte den kürzeren Ansatz gewählt

    SQL-Abfrage

    1. UPDATE tblGuthaben INNER JOIN tblAnmeldedaten on tblGuthaben.ID = tblAnmeldedaten.ID
    2. SET tblGuthaben.letzeAufladung = GETDATE()
    3. WHERE tblAnmeldedaten.Benutzername = 'Test'
    oder, wenn du schon mit Aliases arbeiten willst, kannst du es auch kürzer machen

    SQL-Abfrage

    1. UPDATE tblGuthaben G INNER JOIN tblAnmeldedaten A on G.ID=A.ID SET G.letzeAufladung=GETDATE() WHERE A.Benutzername='Test'
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --