![]() |
Datenbank: firebird • Version: 2.5 • Zugriff über: Delphi XE
SQL-Frage
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. |
AW: SQL-Frage
Am Besten durch Normalisierung ( 2 Tabellen)
Person ID Name Nummer ID Person Nummer Nummer.Person ist dann ein FK auf die Tabelle Person |
AW: SQL-Frage
Zitat:
Man würde es nicht mit 1 Tabelle machen. (Wenn das überhaupt die Frage ist) |
AW: SQL-Frage
Zitat:
|
AW: SQL-Frage
Hallo,
Zitat:
Delphi-Quellcode:
Oder was genau weisst Du nicht?
Query.SQL.Clear;
Query.SQL.Add('Insert Into Tabelle Values(:Name,:TelefonNummer)'); Query.ParamByName('Name').AsString:= 'Bla1'; Query.ParamByName('TelefonNummer').AsString:= 'Bla2'; Query.ExecSQL; |
AW: SQL-Frage
Zitat:
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. |
AW: SQL-Frage
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 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