SQL-Abfrage funktioniert nicht
Marcus
- datenbank
Hi Leute!
Hab ein Problem mit meiner SQL-Abfrage.
Die alte Abfrage läuft:
$stmt = $vgs_pdo->prepare("SELECT ID, NAME, LAND, ZUSTAND,HAUPT_KZL, NEBEN_KZL, T_MAX, FLIESS_MAX, TIEFE_MAX FROM dbo.VI_GEOTH_TOOLTIP WHERE ZUSTAND LIKE 'Betrieb' OR ZUSTAND LIKE 'Bau' ORDER BY NAME");
Nun muss die Abfrage aber um weitere drei Spalten ergänzt werden, die sich aber in einer anderen Tabelle befinden.
Hier die neue Abfrage:
$stmt = $vgs_pdo->prepare("SELECT a.ID, a.NAME, a.LAND, a.ZUSTAND, a.HAUPT_KZL, a.NEBEN_KZL, a.T_MAX, a.FLIESS_MAX, a.TIEFE_MAX, b.WLEIST_GES, b.WLEIST_GEO, b.WPA FROM dbo.VI_GEOTH_TOOLTIP AS a, dbo.VI_GEOTH_NUTZUNG AS b WHERE a.ZUSTAND LIKE 'Betrieb' OR a.ZUSTAND LIKE 'Bau' ORDER BY a.NAME");
Leider hängt sich der Browser auf. Für alle Tipps bin ich dankbar.
Gruß Marcus
Hallo Marcus,
Nun muss die Abfrage aber um weitere drei Spalten ergänzt werden, die sich aber in einer anderen Tabelle befinden.
$stmt = $vgs_pdo->prepare("SELECT a.ID, a.NAME, a.LAND, a.ZUSTAND, a.HAUPT_KZL, a.NEBEN_KZL, a.T_MAX, a.FLIESS_MAX, a.TIEFE_MAX, b.WLEIST_GES, b.WLEIST_GEO, b.WPA FROM dbo.VI_GEOTH_TOOLTIP AS a, dbo.VI_GEOTH_NUTZUNG AS b WHERE a.ZUSTAND LIKE 'Betrieb' OR a.ZUSTAND LIKE 'Bau' ORDER BY a.NAME");
du fabrizierst hier ein Kreuzprodukt. Ich vermute, das ist nicht gewünscht, sondern eher ein INNER JOIN.
Gute Informationen zu Joins findest Du in SELFHTML aktuell:
Einführung Joins
Fortgeschrittene Jointechniken
Der erste Artikel sollte für Dein Problem ausreichen.
Leider hängt sich der Browser auf. Für alle Tipps bin ich dankbar.
Die Ergebnismenge umfaßt (Anzahl der Datensätze in Tabelle 1) mal (Anzahl der Datensätze in Tabelle 2) Datensätze. Wunderst Du Dich immer noch?
Freundliche Grüße
Vinzenz
Leider hängt sich der Browser auf. Für alle Tipps bin ich dankbar.
Vielleicht ist der Browser kaputt? ;)
Das Problem könnte übrigens die Produktbildung sein, das Du durch Auflisten verschiedener Tabellen in der FROM-Klausel bildest. Mal "anständige" JOINs ausprobieren. Wie sind die beiden Tabellen logisch verbnunden?
Hallo Marcus,
und über welche Attribute sind die beiden Tabellen miteinander verbunden? Diese Zuordnung scheint in deiner WHERE-Klausel zu fehlen.
Gruß Mia
Für alle Tipps bin ich dankbar.
Was heißt dass sich der Browser aufhängt? Du meinst der schmiert ab? Is ja ein Unding!
Probiers vllt. mal mit
error_reporting(E_ALL);
ini_set('display_errors', 1);
dann kriegst du nämlich genau gesagt was und wo was in deiner Abfrage nicht funktioniert.
Hallo Erik,
Was heißt dass sich der Browser aufhängt? Du meinst der schmiert ab? Is ja ein Unding!
stell' Dir einfach vor, in der ersten Tabelle wären 1.000 Datensätze und in der zweiten 1.500. Bei diesen recht bescheidenen Datenmengen umfasst die Ergebnismenge der Abfrage bereits schlappe 1.500.000 Datensätze, was einen Browser schon in die Knie zwingen kann.
Da liegt das Problem, nicht in irgendwelchem PHP.
Freundliche Grüße
Vinzenz
Hi Leute!
Mit einem Inner Join hat es geklappt. Danke an alle.
Gruß Marucs