Nun, du wirst zwei Abfragen brauchen ...
Hallo
ich versuche folgende abfrage zu starten. Es gibt eine Datenbank mit allen vorwahlnummern ,wobei noch ein Datenfeld mit der Region existiert, aus Deutschland und einige 100 vollständige Telefonnummern. Jetzt ruft einer an und ich möchte in der Datenbank sehen ob zum 1 diese Nummer vollständig in der Datenbank steht und wenn nicht möchte ich die Rufnummer in der Datenbank nachsehen welche Vorwahl hier passt und möchte mir die Region zurückgeben lassen.
Wie stelle ich das an. Ich weiß das es geht aber leider nicht wie.
Hoffentlich kann mir einer helfen.
Danke
Gruß Henning
Nun, du wirst zwei Abfragen brauchen ...
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Zu dem, was ads sagte, noch eine Frage an Dich: wie trennst Du folgende Nummern in Vorwahl und Rufnummer?
03514586127
03521452231
035242470
03524247150
Angenommen, keine dieser Nummern ist bisher bekannt. Du willst also nun in der Tabelle mit den Vorwahl-Nummern schauen. Also, sage mir zu jeder der Nummern die korrekte Vorwahl-Nummer.
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Mmh.
Angenommen, Du hast folgende 2 Tabellen:
Ich vereinfache das mal zu einem VIEW:Code:test=*# select * from vorwahl ; nr | region --------+--------- 0351 | sachsen 03521 | sachsen 035204 | sachsen 035242 | sachsen (4 rows) test=*# select * from komplett ; nr | inhaber -------------+---------------- 03521737874 | max mustermann 035242470 | zentrale firma (2 rows)
Ich prüfe nun mal auf 2 Nummern und bin nur an dem Datensatz interessiert, der am besten paßt:Code:test=*# \d tel View "public.tel" Column | Type | Modifiers --------+------+----------- nr | text | region | text | View definition: SELECT vorwahl.nr, vorwahl.region FROM vorwahl UNION ALL SELECT komplett.nr, komplett.inhaber AS region FROM komplett; test=*# select * from tel; nr | region -------------+---------------- 0351 | sachsen 03521 | sachsen 035204 | sachsen 035242 | sachsen 03521737874 | max mustermann 035242470 | zentrale firma (6 rows)
PS.: bitte jetzt keinen Telefonterror auf meiner Durchwahl...Code:test=*# select *, length(nr) as laenge from tel where '035242470' ~ nr order by length(nr) desc limit 1; nr | region | laenge -----------+----------------+-------- 035242470 | zentrale firma | 9 (1 row) test=*# select *, length(nr) as laenge from tel where '03524247150' ~ nr order by length(nr) desc limit 1; nr | region | laenge --------+---------+-------- 035242 | sachsen | 6 (1 row)
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen