AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Frage

Ein Thema von Trafel21 · begonnen am 10. Dez 2018 · letzter Beitrag vom 12. Dez 2018
Antwort Antwort
Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#1

SQL-Frage

  Alt 10. Dez 2018, 13:27
Datenbank: firebird • Version: 2.5 • Zugriff über: Delphi XE
Hallo zusammen,

Ich hab ein kleines Denkproblem und komme nicht auf die Lösung.

Ich hab eine Tabelle aus einem Telefonbuch mit Name(string) und Telefonnummer(string).

Bspw.:

Name Telefon
Max Mustermann 5623345345, 343242355

Ich würde gerne eine Procedur schreiben die die Telefonnummer trennt und als 2 Datensätze in die Tabelle schreibt.

Name
Max Mustermann 5623345345
Max Musternman 343242355

Ich hab bereits eine Funktion, die den Telefonstrings filtert und als 2 Werte zurückgibt als Tabelle. Nur weiß ich nicht,
wie ich diese 2 Werte in eine Tabelle bekomme.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SQL-Frage

  Alt 10. Dez 2018, 13:32
Am Besten durch Normalisierung ( 2 Tabellen)

Person
ID
Name

Nummer
ID
Person
Nummer

Nummer.Person ist dann ein FK auf die Tabelle Person
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: SQL-Frage

  Alt 10. Dez 2018, 14:26
Am Besten durch Normalisierung..
Also (nicht durch eine wie "gefordert", sondern) durch 2 Tabellen.

Man würde es nicht mit 1 Tabelle machen.
(Wenn das überhaupt die Frage ist)
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: SQL-Frage

  Alt 10. Dez 2018, 14:52
Man würde es nicht mit 1 Tabelle machen.
In alten Systemen findet sich oft noch der Ansatz mit einer Tabelle und zwei Telefonnumner/-Fax Feldern, also gibt es das schon noch. Aber sinnvoll ist eine zweite Tabelle (z.B. "Kommunikationsdaten"), die ggf. sogar pro Eintrag noch eine Charakterisierung ermöglicht (Fax,Telefon,Mobil,Email,...) oft schon.
Ralph
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: SQL-Frage

  Alt 10. Dez 2018, 16:24
Hallo,
Zitat:
Nur weiß ich nicht,
wie ich diese 2 Werte in eine Tabelle bekomme.
Delphi-Quellcode:
Query.SQL.Clear;
Query.SQL.Add('Insert Into Tabelle Values(:Name,:TelefonNummer)');
Query.ParamByName('Name').AsString:= 'Bla1';
Query.ParamByName('TelefonNummer').AsString:= 'Bla2';
Query.ExecSQL;
Oder was genau weisst Du nicht?
Heiko
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#6

AW: SQL-Frage

  Alt 12. Dez 2018, 17:20
Ich hab bereits eine Funktion, die den Telefonstrings filtert und als 2 Werte zurückgibt als Tabelle. Nur weiß ich nicht,
wie ich diese 2 Werte in eine Tabelle bekomme.
Sollen die beiden in die gleiche Tabelle oder eine andere? Sprich, sollen einfach nur alle Einträge mit mehreren Nummern ersetzt werden durch mehrere Einträge mit je einer Nummer, oder soll eine ganz neue Struktur aufgebaut werden?
Ich könnte mir vorstellen, dass die Tabelle tatsächlich nicht nur Name und Nummer enthält, sondern Teil einer ganzen Adresstabelle ist. Da wäre eine externe Tabelle, die über eine Fremdschlüsselbeziehung nur die Nummern zur Adresse enthält, sicherlich angebracht. In einem klassischen Bildschirmformular wird dann bei der Adresse statt einem Textfeld mit 3 Nummern eine Listbox, Tabelle etc. mit den zugehörigen Nummern angezeigt.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: SQL-Frage

  Alt 12. Dez 2018, 18:15
Wie schon erwähnt die 2. Tabelle entsprechend anlegen.

Ich persönlich würde die Datensätze der Ursprungstabelle in Delphi durchiterieren, mit den üblichen Stringfunktionen von Delphi in die einzelnen Teile zerlegen und dann in die neue Tabelle eintragen. Ob du da mit reinem SQL schneller oder überhaupt ans Ziel kommst weiß ich nicht.

Ich hatte vor paar Tagen das Problem ein STRING-Feld in integer umwandeln zu müssen. Da hier teilweise auch Buchstaben eingetragen waren musste ich diese zuerst eliminieren. Das habe ich auch mit durchiterieren gemacht. Programm war in 15 Minuten geschrieben, die Konvertierung war in 5 Sekunden durch. Leider konnte mein verwendetes DBMS die SQL-Anweisung ISNUMERIC nicht, sonst wäre das mit reinem SQL schneller erledigt gewesen.
Michael Kübler

Geändert von scrat1979 (12. Dez 2018 um 18:18 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz