Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

verschachtelte Abfrage





Frage

Hallo, habe folgendes Problem und hoffe auf Eure Hilfe. Ich muss aus einer Tabelle einer größeren DB nach bestimmten Kriterien ausfiltern. Das Problem ist, dass die Tabelle folgendermaßen aussieht: Kunde Parameter Value Kunde1 Standort Berlin Kunde1 Kundennummer 12354 Kunde1 Zuständiger Peter Kunde1 AnzahlPCs 10 Kunde1 Betriebssystem Windows NT Kunde2 Standort Bremen Kunde2 Kundennummer 12647 Kunde2 Zuständiger Karl Kunde2 AnzahlPCs 24 Kunde2 Betriebssystem Windows 2000 Kunde3 Standort Kassel Kunde3 Kundennummer 15747 Kunde3 Zuständiger Peter Kunde3 AnzahlPCs 4 Kunde3 Betriebssystem SunOS ... Warum das so gemacht wurde weis ich auch nicht und kann es auch nicht ändern. Jetzt brauche ich alle Kunden mit Standort=Berlin. Davon alle, die Peter als Ansprechpartner haben. Eine eifache Abfrage würde ja so aussehen: select * from Tabelle where parameter=´Standort´ and value=´Berlin´ Damit sind aber alle anderen Zeilen der Kunden die nicht "Standort" bei Parameter haben weg oder? Dann kann ich doch als nächstes nicht weiter nach parameter=´Zuständiger´ suchen, weil die Spalte ja schon ausgeschlossen wurde durch die erste Abfrage. Vielleicht habe ich ja auch nur einen großen Denkfehler... Danke, Ben

Antwort 1 von disco

moin

das aller einfachste, ohne viel nachdenken, ist doch, dass du 2 abfragen machst. einmal fragste nach allen kundenIDs, die am standort Berlin sind und diese benutzte dann um alle anderen werte zu holen
mit etwas mühe, mehr lust und kenntnissen, als ich sie habe, wird das sicher auch in einem SQL-Statement gehen...

g,
disco

Antwort 2 von hikE

hmm... dann mach doch ne ODER Abfrage bei der du den Parameter "Zuständiger" und den Value "Peter" auf die gleiche Weise abfragst wie "Standort" und "Berlin".

Wenn du das als Tabellenerstellungs-Abfrage machst, kannst du in der neuen Tabelle anschliessend nach

Berlin UND Peter filtern.

Klingt mindestens so kompliziert wie der Aufbau eurer DB... und ist sicher nur ein Workaround, um aus so ner DB n brauchbares Ergebnis zu kriegen

vielleicht hat ja auch noch jemand anders hier ne intelligentere Lösung...

Gruss hikE

Antwort 3 von erik

Ich schließe mich der Meinung von disco an: Zuerst die KundenID filtern und darauf dann einen Filter nach "Zuständiger". Eine entsprechende Abfrage würde so aussehen:


SELECT * FROM Tabelle INNER JOIN
(SELECT Kunde FROM Tabelle WHERE Parameter = "Standort" AND Value = "Berlin") AS StandortFilter ON Tabelle.Kunde = StandortFilter.Kunde WHERE Parameter = "Zuständiger" AND Value = "Peter";


Zur besseren Übersicht kann der Teil in Klammern auch als separate Abfrage abgespeichert und eingebunden werden.

Antwort 4 von der_benn

Tabellenerstellungs-Abfrage geht nicht, da kein Access benutzt wird. Es geht alles über ben Browser auf eine Oracle DB.

Vielleicht habe ich mich auch ein bischen unglücklich ausgedrückt. Im Endeffekt soll eine Zeile dann so aussehen, wenn nach Standort=Berlin und Zuständiger=Peter sortiert wurde:

Kunde1 | Berlin | Peter | 12354 | 10 | Windows NT

Das Probelm ist besteht ja auch darin, dass dann alles für einen Kunden in einer Zeile stehen soll.

MfG
ben

Antwort 5 von disco

Zitat:
Es geht alles über ben Browser auf eine Oracle DB.

wenn du von vornherein vernünfige antworten haben möchtest, splltest du auch gleich zu anfang, alle nötigen angaben machen. wenn hier keine DB genannt wird, gehen immer alle gleich von access aus, weil es meisstens so ist, dass leute die keine angaben machen, gar nicht wissen das es auch noch was anderes ausser access gibt...

Zitat:
Das Probelm ist besteht ja auch darin, dass dann alles für einen Kunden in einer Zeile stehen soll

wie du die daten auf der html-seite präsentierst ist nicht sache, des sql-satatements.

g,
disco

Antwort 6 von der_benn

Habe meinen Fehler auch bemerkt, als das Wort Tabellenerstellungs-Abfrage fiel ;-)

Hatte eigentlich nicht vor, Verwirrung zu stiften. Ich weis auch nicht genau, ob das Forum überhaupt der richtige Anlaufpunkt ist. Hatte halt nur die Gruppe Datenbanken gesehen und dachte mir: Hier bin ich richtig".

MfG
ben

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: