Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Sortieren und manipulieren von Datenbank-Einträgen (https://www.delphipraxis.net/138600-sortieren-und-manipulieren-von-datenbank-eintraegen.html)

Ines 13. Aug 2009 11:05


Sortieren und manipulieren von Datenbank-Einträgen
 
Hallo DP'ler!

Heute wende ich mich gleich an Euch, da ich noch nicht weiß, wie ich das Problem am besten löse.
Ich habe folgende Daten in der Datenbank:

PETCT 18-FDG-PET vom 03.08.2009 -
PETCT Onko-PET (18F-FDG) vom 03.08.2009
PETCT Onko-PET (18F-FDG) vom 03.08.2009
PETCT Onko-PET (18F-FDG) vom 04.08.2009
PETCT Onko-PET (18F-FDG) vom 06.08.2009
PETCT Onko-PET (68Ga-DOTATATE) vom 03.08.2009
PETCT Onko-PET (68Ga-DOTATATE) vom 06.08.2009
PETCT PET/CT (18F-FDG) vom 03.08.2009 mit CT - Thorax
PETCT PET/CT (18F-FDG) vom 04.08.2009 mit CT - Abdomen
PETCT PET/CT (18F-FDG) vom 10.08.2009 mit CT - Thorax
PETCT PET/CT (68Ga-DOTATATE) vom 10.08.2009 mit CT - Abdomen

Das Ergebnis soll eine Liste mit den Anzahl Untersuchungen sein, allerdings ohne Datum.

PETCT 18-FDG-PET 1
PETCT Onko-PET (18F-FDG) 4
PETCT Onko-PET (68Ga-DOTATATE) 2
PETCT PET/CT (18F-FDG) mit CT - Thorax 2
PETCT PET/CT (18F-FDG) mit CT - Abdomen 1
PETCT PET/CT (68Ga-DOTATATE) mit CT - Abdomen 1

Nun würde mich interessieren, wie Ihr das Problem lösen würdet.
Soll ich die Daten "zurechtschneiden" und in eine temporäre Datenbank speichern oder
gibt es eine Delphi-Komponente, die mir einen Teil der Arbeit abnimmt.

Vielen Dank im Voraus
Mit freundlichen Grüßen
Ines

Delphi2009, Win XP, Oracle RDB-Datenbank

DeddyH 13. Aug 2009 11:11

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Es wäre interessant zu wissen, wie die Datenstruktur aussieht. Vermutlich lässt sich das mit einer relativ simplen Abfrage erschlagen. Welche Delphi-Zugriffskomponenten Du verwendest, hängt weitestgehend vom Budget und dem Anspruch ab.

iKilledKenny 13. Aug 2009 11:15

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Wenn die Daten tatsächlich so in dieser Form in einer Columne vorliegen, wird dir wohl nichts anderes übrig bleiben, als die Daten "von Hand zu zerlegen".

Ansonsten mal das Datenmodell vorstellen.

Ines 13. Aug 2009 11:18

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Zitat:

Zitat von DeddyH
Es wäre interessant zu wissen, wie die Datenstruktur aussieht. Vermutlich lässt sich das mit einer relativ simplen Abfrage erschlagen. Welche Delphi-Zugriffskomponenten Du verwendest, hängt weitestgehend vom Budget und dem Anspruch ab.

Datenstruktur: es handelt sich um 3 Textfelder
1. Feld: Organ (PETCT oder Herz oder SD oder....)
2. Feld: Überschrift
3. Feld: Zusatz (z.B. mit CT - Thorax)
Zugriffskomponenten: ich arbeite im öffentlichen Dienst - hoher Anspruch aber low bugdet!

Viele Grüße
Ines

f00shizzle 13. Aug 2009 11:23

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
SQL-Code:
select
  name || ' ' || organ || ' ' || zusatz,
  count(*)
from
  tabelle
group by
  name || ' ' || organ || ' ' || zusatz

Panthrax 13. Aug 2009 11:31

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Sind die Daten schon in einer SQL-Datenbank?

@"f00shizzle": Vor fast zweieinhalb Jahren angemeldet, und das eben war der erste Beitrag!? :spin2: :cheer: :spin2:

Ines 13. Aug 2009 11:34

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Sorry, meine Anfrage hat einen Fehler: :gruebel:
die Spalten werden nicht richtig dargestellt.
Ich weiß auch nicht, wie ich es richtig machen kann.
Es handelt sich um 3 Felder.
Die select-Anweisung hilft mir nicht weiter, da ich den
mittleren Teil quasi "bearbeiten" muß. (Das Datum muß raus).
Delphi-Quellcode:
Feld1   Feld2                         Zusatz              Anzahl
PETCT   18-FDG-PET                              1
PETCT   Onko-PET (18F-FDG)                              4
PETCT   Onko-PET (68Ga-DOTATATE)                            2
PETCT   PET/CT (18F-FDG)          mit CT - Thorax           2
PETCT   PET/CT (18F-FDG)          mit CT - Abdomen          1
PETCT   PET/CT (68Ga-DOTATATE)    mit CT - Abdomen      1

Die Daten sind in einer Oracle-RDB-Datenbank (SQL-Datenbank).

Grüße
Ines

f00shizzle 13. Aug 2009 11:36

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
das war ein alterego eines damaligen rausgeekelten accounts von mir :D ich musste einfach mal was sagen. nachdem dreimal geantwortet wurde ohne zu antworten, obwohl es offensichtlich ist/war :)

f00shizzle 13. Aug 2009 11:38

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Zitat:

Zitat von Ines
Sorry, meine Anfrage hat einen Fehler: :gruebel:
die Spalten werden nicht richtig dargestellt.
Ich weiß auch nicht, wie ich es richtig machen kann.
Es handelt sich um 3 Felder.
Die select-Anweisung hilft mir nicht weiter, da ich den
mittleren Teil quasi "bearbeiten" muß. (Das Datum muß raus).
Delphi-Quellcode:
Feld1   Feld2                         Zusatz              Anzahl
PETCT   18-FDG-PET                              1
PETCT   Onko-PET (18F-FDG)                              4
PETCT   Onko-PET (68Ga-DOTATATE)                            2
PETCT   PET/CT (18F-FDG)          mit CT - Thorax           2
PETCT   PET/CT (18F-FDG)          mit CT - Abdomen          1
PETCT   PET/CT (68Ga-DOTATATE)    mit CT - Abdomen      1

Die Daten sind in einer Oracle-RDB-Datenbank (SQL-Datenbank).

Grüße
Ines

das datum ist doch in deinem ergebnis da schon raus oder sehe ich das falsch?

mit dem || operator kannst du die spalten miteinander verknüpfen, wie du sicherlich weißt.

iKilledKenny 13. Aug 2009 11:39

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Wenn ich das richtig verstehe, sind diese Daten

Zitat:

Zitat von Ines
Delphi-Quellcode:
Feld1   Feld2                         Zusatz              Anzahl
PETCT   18-FDG-PET                              1
PETCT   Onko-PET (18F-FDG)                              4
PETCT   Onko-PET (68Ga-DOTATATE)                            2
PETCT   PET/CT (18F-FDG)          mit CT - Thorax           2
PETCT   PET/CT (18F-FDG)          mit CT - Abdomen          1
PETCT   PET/CT (68Ga-DOTATATE)    mit CT - Abdomen      1

das was du gerne haben würdest. Wie liegen denn die Daten original in der DB vor? Wo ist denn das Datum, das raus muss?

iKilledKenny 13. Aug 2009 11:41

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Manchmal kann man sich dann doch nur wundern, wie schnell die Dinge hier "verstanden" werden...

Zitat:

Zitat von f00shizzle
nachdem dreimal geantwortet wurde ohne zu antworten, obwohl es offensichtlich ist/war :)


Panthrax 13. Aug 2009 11:46

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Das Datum steht immer dabei? Dann könnte man es doch einfach vom entsprechenden Feld abschneiden, oder? Glücklicherweise hat es führende Nullen, so dass jedes Datum gleichlang ist.
SQL-Code:
select ...substring(Feld,1,Length(Feld)-14)...

Ines 13. Aug 2009 11:49

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
So schauen die Originaldaten aus:

Delphi-Quellcode:
PETCT   PET/CT (18F-FDG) vom 03.08.2009      mit CT - Thorax
PETCT   PET/CT (18F-FDG) vom 04.08.2009      mit CT - Abdomen
PETCT   PET/CT (18F-FDG) vom 10.08.2009      mit CT - Thorax
PETCT   PET/CT (68Ga-DOTATATE) vom 10.08.2009   mit CT - Abdomen
Ich habe das Datum gelöscht, um zu zeigen, was ich als Ergebnis möchte.
Da das Datum an unterschiedlicher Position kommt, muß ich jeden Satz einzeln bearbeiten.
Es gibt auch Datensätze ohne Datum - um mir die ganze Sache zu erleichtern!!!! :stupid:
Aber wie es dann weitergeht: darüber grüble ich noch.
(Datenbank - um dann mit Select count das Ergebnis zu bekommen oder irgendeine geeignete Delphi-Komponente).

Viele Grüße
Ines

f00shizzle 13. Aug 2009 11:54

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
dann wollen wir mal eine finale lösung vorstellen:

SQL-Code:
select
   beschreibung || ' ' || Anzahl
from
   (
      select
        Feld1 || ' ' || substr(Feld2, 1, instr(feld2, 'vom')-1) || ' ' || Zusatz beschreibung,
        count(*) anzahl
      from
        tabelle
      group by
        Feld1 || ' ' || substr(Feld2, 1, instr(feld2, 'vom')-1) || ' ' || Zusatz
   )
wenn man davon ausgeht das in feld2 immer ein datum enthalten ist :)

iKilledKenny 13. Aug 2009 11:59

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Zitat:

Zitat von Ines
Es gibt auch Datensätze ohne Datum - um mir die ganze Sache zu erleichtern!!!! :stupid:

Zitat:

Zitat von f00shizzle
wenn man davon ausgeht das in feld2 immer ein datum enthalten ist :)

Anstelle von SubStr und InStr würde ich dann mit RTrim arbeiten, sofern das Datum, wenn es denn vorhanden ist, IMMER als letztes kommt.

f00shizzle 13. Aug 2009 12:10

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
wie wäre es denn mit einem union select :)

1x selektiere ich mir alle, in denen ein datum vorkommt, substr/instr die und
1x selektiere ich die ohne datum (rtrim wird man da sicher auch vermeiden können)

dritte möglichkeit, man bedient sich der vielfältigen möglichkeiten von regularexpression funktionen, die oracle ebenso bietet
dann reicht ein einfaches replace(feld2, regex(...), '') ...

:/

DeddyH 13. Aug 2009 12:14

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Das Datum ist mit im "Zusatz"-Textfeld gespeichert? Wer macht denn sowas? Das macht eben die Definition von "wo ein Datum drin vorkommt" u.U. sehr kompliziert.

p80286 13. Aug 2009 12:24

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
[OT]

Zitat:

Zitat von DeddyH
Das Datum ist mit im "Zusatz"-Textfeld gespeichert? Wer macht denn sowas? Das macht eben die Definition von "wo ein Datum drin vorkommt" u.U. sehr kompliziert.

Du glaubst gar nicht was es da für intelligente Lösungen gibt! Stell Dir einfach mal ein "Text-Feld" vor in dem an der 5. Position ein Datum eingegeben werden soll. Zum einen ist das unter Windows mit diesen proportionalen Fonts eine echte Herausforderung, zum anderen hat beinahe jeder eine andere Vorstellung davon was das korrekte Datumsformat ist.

Gruß
K-H
[/OT]

Ines 13. Aug 2009 12:35

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Zitat:

Zitat von DeddyH
Das Datum ist mit im "Zusatz"-Textfeld gespeichert? Wer macht denn sowas? Das macht eben die Definition von "wo ein Datum drin vorkommt" u.U. sehr kompliziert.

Das Datum ist bei der Überschrift gespeichert. In der Relation ist das Datum noch an anderer Stelle gespeichert.

Ich habe Datensätze ohne Datum - da ich in einer früheren Programmversion einfach das Untersuchungsdatum an die Überschrift drangehängt habe. Aber damit ist der Ausdruck nicht 100% gleich mit den Datenbank-Einträgen.
Wenn Kaffeefleck auf dem Ausdruck - dann auch bitte auf der Datenbank!!! :evil:

Wir haben eine Oracle-RDB-Datenbank.

Ich habe mich entschlossen, eine temporäre Relation auf meiner Datenbank zu erstellen und dann die Sätze bearbeitet dorthin zu schreiben.
Anschließend kann ich mit select count... die Abfrage durchführen und das Ergebnis in eine Excel-Tabelle schreiben.

Viele Grüße
Ines

f00shizzle 13. Aug 2009 13:01

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Zitat:

Zitat von Ines
Wir haben eine Oracle-RDB-Datenbank.

schade

mkinzler 13. Aug 2009 13:04

Re: Sortieren und manipulieren von Datenbank-Einträgen
 
Zitat:

Ich habe Datensätze ohne Datum - da ich in einer früheren Programmversion einfach das Untersuchungsdatum an die Überschrift drangehängt habe. Aber damit ist der Ausdruck nicht 100% gleich mit den Datenbank-Einträgen.
Dann würde ich in einem einmaligen Lauf richtigstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz