Group by mit ungefähr gleichen Zeilen?

Hallo,
ich habe folgedes Problem.
Ich habe Zeilen mit Fehlermeldungen Vorliegen, in den sich nur manche Zeichen unterscheiden, jedoch die Zeile= der anderen Zeile ist, welche sich ja nur an 2-3 Zeichen unterscheidet.

Komplizert zu verstehen ich weiß, aber Das Problem besteht leider.

Jetzt möchte ich euch fragen, ob es nicht Irgendwie möglich die Zeilen Trotzdem zu gruppieren/ zusammenzuzählen.

Vielen Dank für eure Hilfe.

Grüße

Auch hallo.

Also ohne Angabe des DBMS und eines konkreteren Beispiels wird das zwar schwieriger, aber der LIKE Operator könnte weiterhelfen.

HTH
mfg M.L.

MS SQL SERVER

das problem mit Like ist, dass es 38000 Zeilen sind mit circa 40 unterschiedlichen Fehler, also im Ansatz gleich bis auf wenige Zeichen.

beispiel

Schüler3:Klasse5:Raum432:Lehrerb:EintrittsNummer4
Schüler5:Klasse5:Raum432:Lehrerb:EintrittsNummer3
Schüler2:Klasse5:Raum432:Lehrerb:EintrittsNummer2

und jetzt sollen aber alle SChüler mit gelichen raum klasse etc zusammen gehören und als einheitlicher Schüler gemacht werden.

und was zum thema like noch dazu kommt ist, dass die Meldungen ca 400 zeichen haben!!

danke für deine Antwort, ging ja recht fix

Hallo,

dein eigentliches Problem ist, dass du die !. Normalform verletzt hast: Daten müssen atomar vorliegen.

Du kannst entweder über eine Prozedur/Trigger die einzelnen Teile in eigene Felder aufteilen oder dies bei jedem Select machen. (Z.B. mit SUBSTR)

Gruß

Peter

MS SQL SERVER

das problem mit Like ist, dass es 38000 Zeilen sind mit circa
40 unterschiedlichen Fehler, also im Ansatz gleich bis auf
wenige Zeichen.

beispiel

Schüler3:Klasse5:Raum432:Lehrerb:EintrittsNummer4
Schüler5:Klasse5:Raum432:Lehrerb:EintrittsNummer3
Schüler2:Klasse5:Raum432:Lehrerb:EintrittsNummer2

i:und jetzt sollen aber alle SChüler mit gelichen raum klasse

etc zusammen gehören und als einheitlicher Schüler gemacht
werden.

und was zum thema like noch dazu kommt ist, dass die Meldungen
ca 400 zeichen haben!!

danke für deine Antwort, ging ja recht fix

Hallo,
was meinst du mit Atomar?
Atomar= alle daten einzigartig?

Wie könnte so eine Prozedur aussehen?

ich habe jetzt für meine verschiedenen Fälle einzelne Substring abfragen . Das kann nicht die lösung sein/bleiben da immer wieder andere Fehler kommen können.
gruß

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

MS SQL SERVER

das problem mit Like ist, dass es 38000 Zeilen sind mit circa
40 unterschiedlichen Fehler, also im Ansatz gleich bis auf
wenige Zeichen.

beispiel

Schüler3:Klasse5:Raum432:Lehrerb:EintrittsNummer4
Schüler5:Klasse5:Raum432:Lehrerb:EintrittsNummer3
Schüler2:Klasse5:Raum432:Lehrerb:EintrittsNummer2

–> Ideales Beispiel für ein vermurkstes Datenmodel, resp. das Fehlen eines solchen. Ist es möglich, das Datenmodell zu korrigieren ? Die Daten sollten per Script ohne grössere Probleme in ein korretes Modell überführt werden können.

Hallo,

atomar heißt unteilbar.

Besser wäre also statt ein Feld mit Schüler3:Klasse5:Raum432:Lehrerb:EintrittsNummer4,
eins mit Schüler, eins mit Klasse, eins mit Raum, eins mit Lehrer und eins mit der Eintrittsnr.
Also 5 Felder und nicht nur eins.

Wenn du die Felder einfach ergänzt, kannst du sie mit einer Prozedur befüllen, die halt einfach den String auseinander nimmt und auf die einzelnen Felder verteilt.

Gruß

Peter

schüler

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi!

Ich glaube, das Problem liegt hier weniger in der 3.Normalform, sondern daß hier Zeilen als Fehler zurückgeliefert werden - machen wir auch so: Timestamp, Ebene des Fehlers, welches Programm und dann noch ein frei definierbarer Textstring, der von allen möglichen Applikationen verwendet wird und somit nicht unterschieden werden kann, welches Feld welchen Wert mit welchem Fehler besitzt - und da kommen halt auch solche Ungetüme raus; wobei diese Tabelle nur für uns Entwickler dient, damit wir sehen, warum wieder mal was schiefgegangen ist …

select substr(fehlerfeld,10,23) as fehler,count(\*) as anzahl
from fehlertabelle
where fehlerfeld like 'Schüler%Klasse%Raum%Lehrer%'
group by substr(fehlerfeld,10,23)

würde dann ein

fehler anzahl
--------------------------- ------
Klasse5:Raum432:Lehrerb 3
Klasse6:Raum433:Lehrerc 2

Wobei das hier (natürlich :smile: die Oracle-Notation ist, aber mit SQL-Server schaut’s ähnlich aus - ich glaub, da heißt’s dann sogar „substring“???

Grüße,
Tomh

PS: Oder habe ich hier irgendwas komplett falsch verstanden …

Hallo Tomh,

ja, der Thread mit der 3NF steht im anderen Board. Hier wird ja auch nicht die 3NF, sondern schon die 1NF, die Atomarität der Daten veletzt.

Der Rest ist gut und kommt etwa aufs Gleiche raus, wie ich auch vorgeschlagen habe. Ist halt etwas Aufwendiger, das beim Select zu machen. Besser, es steht schon richtig in der Tabelle drin.

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Guten Morgen,
Tomh genau wie du das erzählst, wird auch meine Zeile aufgebaut.
Das Problem bei mir liegt halt dort, dass ich diese Tabelle auswerten möchte und dazu manche Fehler Zeilen angleichen muss. Im Moment mache ich das schon mit Substring (…) Abfragen, aber das geht auf die Dauer nicht gut, da für jeden einzelnen Fehler die Methode neu geschrieben werden muss und das liegt nicht in meinem Sinne.
Ich werde mir jetzt wohl von dem der die Fehlermeldungen gebaut hat, also zumindest programmiert hat mitteilen lassen, wie die einzelnen Abschnitte von einander getrennt werden

Vielen Dank für eure mühe und wenn euch was einfällt einfach nur schreiben.

Grüße Basti

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
naja ich bin noch nicht so in der Materie drin. Ich habe meine Daten auch nur so bekommen. Das zerlegen wird wohl auch die letzte Möglichkeit bleiben, ist aber sehr komplizert. Da eine Zeile schon mal aus 500 Zeichen besteht und 4 verschiedene Abgrenzungen besitzt.
Hä? Ja ich meine eine Zeile besteht aus 4 Meldungen, die einfach durch || oder // … aneinander gehängt worden.
Das Problem ist ja nicht nur das der Fehler aus solch vielen Information besteht sondern das die Tabelle noch mehr Spalten hat welche in dann mit den Fehlern per Cube bearbeitet werden sollen.
so ich werde mich auf mein Problem stürzen.

Danke für eure HIlfe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Thema Migration
Hi Basti,

Schüler3:Klasse5:Raum432:Lehrerb:EintrittsNummer4
Schüler5:Klasse5:Raum432:Lehrerb:EintrittsNummer3
Schüler2:Klasse5:Raum432:Lehrerb:EintrittsNummer2

lies den Krempel in Excel ein, dann hast Du die Felder schon mal als Spalten vorliegen. Anschließend nach Belieben sortieren, gruppieren, vereinzeln und schon hast Du Ladebestände für eine anständige Datenbank.

Gruß Ralf

Habe ich mitlerweile gemacht, nur klappt das mit dem Text in Spalten… noch nicht so ganz. daran fummel ich gerade ein bisschen rum!

griß Basti

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Basti,

nur klappt das mit dem Text in
Spalten… noch nicht so ganz.

Trennzeichen „:“, dann wird das schon.

Gruß Ralf

hihi schön wäre es eine zeile sieht ungefähr so aus

Error: Operation: DEACTIVATE_CC Code: EXCPT_UNABLE_TO_COMPLY||Error deactivating SNC: 49_89_200_7102/0131313, jobObj.reason:SNC com.marconi.integrator.interfaces.csb.tcmp.cocos.database.snc.SubnetworkConnection/1461038 kann nicht gelöscht werden: Errortype: OBJECT_NOT_FOUND(23) Severity: FAILURE(1) RetryTime:0 Reason:AAdapt

und ich bin gerade dabei herraus zu finden wo da die ketten zusammen gesetzt wurden.

also leider nix mit „:“

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Basti,

also leider nix mit „:“

dochdoch. Erstmal mit „:“ zerlegen, dann kannst Du schon mal eine ganze Menge Spalten löschen, nämlich die Teile, die nur Standardtexte enthalten. Irgendwann kommst Du in die Nähe der Daten, die wichtig sind.

Gruß Ralf

Hallo Ralf,
nach einer stressigen langen Qual, ist die Tabelle jetzt endlich so, dass sie mir gefällt :wink:.
dann werd ich jetzt mal meine Views erneut bauen.

Grüße Basti

ps bei fragen meld ich mich :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]