dedlfix: mysql: Kompliziertes SQL-Problem

Beitrag lesen

Tach!

Hab mir schon gedacht, dass es per JOIN im SELECT nichts wird. ich wüßte aber auch nicht, wo ich hier subquerymäßig ansetzen sollte.

Eine Subquery in der SELECT-Klausel kann dann verwendet werden, wenn man zum einen die Menge der gewünschten Daten in der Hauptquery bereits auf die Zielmenge eingedampft hat (mit FROM, JOIN und WHERE - abzüglich weiterer Ausschlüsse mit HAVING und LIMIT) und zum anderen den Datensatz einer anderen Tabelle mit den Daten des aktuellen Datensatzes ermitteln kann.

Beispiel sei, dass in der Hauptquery Preise stehen, die aber in unterschiedlichen Währungen sein können. Deswegen gibt es ein weiteres Feld mit einem Verweis auf die Währung, die in einer zweiten Tabelle gespeichert wird, weil noch mehr Daten darüber erhoben werden als lediglich das Kürzel EUR oder so. Um nun den Namen der Währung in die Ergebnismenge zu bekommen, kann man joinen. Oder man macht das als Subquery, damit man sich nicht durch den Join die Zwischenmenge unnötig komplex macht.

SELECT preis, (SELECT name FROM waehrungen WHERE id=p.waehrung_id) FROM preise p

Wenn deine Datenmenge also schon fast ok ist, und du über die Kriterien eines Datensatzes genau den Zeildatensatz der anderen Tabelle bestimmen kannst, dann kannst du das so machen.

Eine Eigengschaft von Subquerys gegenüber Joins ist, dass man die Querys und die dabei entstehenden Datenmengen einzeln testen kann und nicht nur irgendein großes Datengemenge aus allen beteiligten Tabellen entsteht.

dedlfix.