Beim Hinzufuegen von Datensaetzen werden Werte die schon vorhanden sind nicht hinzugefuegt.... :(((
Hallo. Ich habe hier ein Logfile-Script, dass eine Statistik erstellt. Jetzt musste ich feststellen, dass die Zählung der Gesamtbesucherzahl nicht ordentlich funktioniert. Ich habe jetzt im Script, dass das Logfile auseinander wuselt das folgende gefunden....
In der Tabelle [benutzer] wird unter "name" wird die UserIP (cIP) eingefügt. Ich möchte, daß bei jedem Durchgang alle "distinct" cIP's aus dem Logfile in die Tabelle [benutzer] eingefügt werden. Und derzeit scheint es so zu sein, daß die cIP's nur eingefügt werden, wenn die IP noch nicht in [benutzer] vorhanden ist.
Hier die SQL-Anweisung, die durchgeführt wird:
INSERT [benutzer](name) SELECT distinct ISNULL(csUsername, cIP) FROM LogAnalyse.tbl_log where ISNULL(csUsername, cIP) NOT IN (SELECT name FROM [benutzer])
Liegt das am "NOT IN (select name from [benutzer])" <-???
Hilfe Hilfe... der verdammte Fehler ist vorher nicht aufgefallen, nur jetzt, da wir auf eine Nullung der Gesamt-Besucherzahl zugehen und deswegen mind. täglich die Gesamtzahl beachten ist es aufgefallen. *hoil* So was doofes.
Natürlich ist der Mensch der das alles eingerichtet hat heute nicht erreichbar...wie sollte es anders sein. *seufz*
Hat irgendjemand einen Tip für mich? SQL ist nicht soooo mein Gebiet. Falls es wichtig ist... es ist ein MSSQL Server.
Vielen Dank schonmal.
bisdenndann
Björn
In der Tabelle [benutzer] wird unter "name" wird die UserIP (cIP) eingefügt. Ich möchte, daß bei jedem Durchgang alle "distinct" cIP's aus dem Logfile in die Tabelle [benutzer] eingefügt werden. Und derzeit scheint es so zu sein, daß die cIP's nur eingefügt werden, wenn die IP noch nicht in [benutzer] vorhanden ist.
Hier die SQL-Anweisung, die durchgeführt wird:
INSERT [benutzer](name) SELECT distinct ISNULL(csUsername, cIP) FROM LogAnalyse.tbl_log where ISNULL(csUsername, cIP) NOT IN (SELECT name FROM [benutzer])
Liegt das am "NOT IN (select name from [benutzer])" <-???
Hilfe Hilfe... der verdammte Fehler ist vorher nicht aufgefallen, nur jetzt, da wir auf eine Nullung der Gesamt-Besucherzahl zugehen und deswegen mind. täglich die Gesamtzahl beachten ist es aufgefallen. *hoil* So was doofes.
Natürlich ist der Mensch der das alles eingerichtet hat heute nicht erreichbar...wie sollte es anders sein. *seufz*
Hat irgendjemand einen Tip für mich? SQL ist nicht soooo mein Gebiet. Falls es wichtig ist... es ist ein MSSQL Server.
Vielen Dank schonmal.
bisdenndann
Björn
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 28418
Url: https://administrator.de/contentid/28418
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
7 Kommentare
Neuester Kommentar
Wenn ich es richtig verstanden habe, willst du alle Benutzer in deinem LogFile in die Tabelle Benutzer einfügen,
egal, ob die da schon mal drinstehen.
Dann liegt es am NOT IN ... --> damit selektierst du ja nur diejenigen, die noch nicht in der Tabelle stehen
Und die Spalte, in dem du den Namen einträgst, darf natürlich kein PrimaryKey bzw. eine Spalte
mit unique-Constraint sein, sonst kannst du von vornherein keine doppelten Werte eintragen...
hoffe, dir hilftst
pi
egal, ob die da schon mal drinstehen.
Dann liegt es am NOT IN ... --> damit selektierst du ja nur diejenigen, die noch nicht in der Tabelle stehen
Und die Spalte, in dem du den Namen einträgst, darf natürlich kein PrimaryKey bzw. eine Spalte
mit unique-Constraint sein, sonst kannst du von vornherein keine doppelten Werte eintragen...
hoffe, dir hilftst
pi
Das Schlüsselwort DISTINCT hinter der SELECT Anweisung sagt aus,
dass er in der Ergebnissmenge nur unterschiedliche Werte ausgibt.
d.h.:
Wenn deine Tabelle folgenden Inhalt hat:
ID Wert
1 10
2 20
3 10
und du macht SELECT DISTINCT WERT... dann bekommst du nur 10 und 20 zurück...
würdest du SELECT WERT machen würdest du 10, 20 und 10 zurückbekommen.
dass er in der Ergebnissmenge nur unterschiedliche Werte ausgibt.
d.h.:
Wenn deine Tabelle folgenden Inhalt hat:
ID Wert
1 10
2 20
3 10
und du macht SELECT DISTINCT WERT... dann bekommst du nur 10 und 20 zurück...
würdest du SELECT WERT machen würdest du 10, 20 und 10 zurückbekommen.