Spezielle Datenbankoptimierung

Hallo,

ich habe eine Datenbank, die mir zu jeder Telefonvorwahl eine Liste von anderen Vorwahlen liefert, die im Ortsbereich sind…

also gibt man ein „07541“ unr kriegt „07531, 0751, etc. etc.“

nun habe ich eine zweite Datebnak in der sind User eingetragen mit ihrer Vorwahl…

nun brauche ich einen performancemäßig schnellen weg alle User rauszufinden, die im Ortsbereich einer eingegeben Vorwahl liegen… also ich geb ein 07541, das ding muss dann suchen welche User in 07541, 07531, 0751 etc. wohnen

wie geht sowas recht schnell?
Ich will ja nicht für 20 Vorwahlen 20 SQL-Queries auf ne Riesen Datenbank machen.

(realisierung in mysql und scriptsprache)

Mir ist nur das System / Algorhithmus wichtig, wie man das dann in Programmcode umsetzt mach ich schon

Thx
Bruno

Hallo,

ich habe eine Datenbank, die mir zu jeder
Telefonvorwahl eine Liste von anderen
Vorwahlen liefert, die im Ortsbereich
sind…

also gibt man ein „07541“ unr kriegt
„07531, 0751, etc. etc.“

Wenn du diese „Liste“ als Datenbanktabelle realisierst, solltest du mit einer einzigen Abfrage alle in Frage kommenden Vorwahlen bekommen.

Reinhard

Jo, sorry Missverständnis, das langt mir aber nicht…
ich brauch dann noch ne zweite Abfrage über alle verzeichneten User, ob deren Vorwahl in der zurückgelieferten Liste drinliegt.
Also alle User sollen returniert werden, die im Vorwahlbereich liegen…

Wenn du diese „Liste“ als
Datenbanktabelle realisierst, solltest du
mit einer einzigen Abfrage alle in Frage
kommenden Vorwahlen bekommen.

Reinhard

Jo, sorry Missverständnis, das langt mir
aber nicht…
ich brauch dann noch ne zweite Abfrage
über alle verzeichneten User, ob deren
Vorwahl in der zurückgelieferten Liste
drinliegt.
Also alle User sollen returniert werden,
die im Vorwahlbereich liegen…

Dann machst du aus den per erster Abfrage gefundenen Vorwahlen eine IN-Klausel (oder OR, wenn MySQL kein IN kennt), also etwa so:

SELECT * FROM tblUser WHERE Vorwahl IN (‚0731‘,‚0722‘,‚0711‘)

bzw.

SELECT * FROM tblUser WHERE ( Vorwahl=‚0731‘ OR Vorwahl=‚0722‘ OR Vorwahl=‚0711‘)

alternativ kannst du auch die beiden Tabellen per JOIN verknüpfen (zumindest geht das bei Access, Oracle oder MS SQL Server). In Access sähe das so aus:

SELECT tblUser.Nachname, tblVorwahl.VorwahlImNahbereich
FROM tblUser INNER JOIN tblVorwahl ON tblUser.Vorwahl = tblVorwahl.Vorwahl

oder du nimmst ein geschachteltes SELECT:

SELECT tblUser.Vorwahl, tblUser.Nachname
FROM tblUser
WHERE (((tblUser.Vorwahl) In (SELECT [Vorwahl] FROM [tblVorwahl] As Tmp Where VorwahlImNahbereich= ‚04101‘)))

Reinhard