Ilja: JOIN-Abfrage optimieren

Beitrag lesen

moin,

Bis auf einen kleinen Punkt: Die plz des Users darf eben auch '' sein, in dem Fall werden natürlich keine Geodaten ausgelesen. Oder anders:
IF (plz != '') { IF (plz in geodata) { gib geodata } else { gib alternative geodata } }

zum einen musst man sich bewußt sein, dass in einigen DBMS ein leerstring mit '' nicht NULL entspricht. zum anderen selbst für den leerstring willst du keinen OUTER JOIN, es ist wenn überhaupt ein INNER JOIN und eventuell läßt es sich anders als mit einem JOIN lösen. aber vergiss mal den ansatz mit dem LEFT JOIN.

das andere problem, dass du hast ist, du musst dir gedanken machen, was du als alternativ wert anzeigen willst. größer oder gleich reicht nämlich nicht für alle fälle aus. stell dir mal vor die geodatenbank ist leer oder aber es gibt keinen größeren alternativ wert als die gesuchte plz, zumal man immer im kopf haben sollte, dass plz keine zahl, sondern ein string ist.

SELECT * FROM user ORDER BY eigenschaft DESC LIMIT 0,15
Je nach Abfrage ggf. noch ein WHERE rein...

bei diesem ansatz muss das dbms alle datensätze der user tabelle durchgehen, um letztlich nur 15 datensätze zu bekommen.

Ilja