[MYSQL] Verschachtelte Abfrage

Steusi

Nasenbär
Hallo Leute,
ich habe gerade eine Verständnis-Problem, hoffe jemand kann mir helfen.

Ich versuche gerade eine Jahresübersicht von bestimmten Daten zu erstellen, dazu summiere ich alle Werte aus einer Spalte auf unter bestimmten Bedingungen (nach einem PLZ-Bereich)

Danach habe ich (vereinfacht) folgende Tabelle

Code:
PLZ	Menge
01	120
02	432
03	623
04	167
06	324

Nur würde ich gern ein "ORDER BY" einbauen um in der ausgegeben Tabelle nach der Menge sortieren zu lassen.

Also sieht die Abfrage folgendermaßen aus:
$row = Menge
$PLZ_ID = 01, 02, 03, 04 .....
PHP:
"SELECT SUM(".$row.") AS Gesamt FROM TABELLE WHERE PLZ =".$PLZ_ID;

Wie bekomme es ein nun hin, die Ergebnisse diese Abfrage in einer weiteren Abfrage unterzubringen um diese zu sortieren?

Ich steht irgendwie gerade auf dem Schlauch, bin für jeden Ideenansatz dankbar!
 
Einfach als Source anstelle der Tabelle nehmen.

Also irgendwie so
Code:
SELECT 
	t.*
FROM
	(SELECT 
		PLZ,
		SUM({$row}) AS Gesamt 
	FROM 
		TABELLE 
	GROUP BY 
		PLZ) t
ORDER BY 
	t.Gesamt
 
Oh Danke, jetzt wo ich es sehe kommt es mir auch ganz entfernt bekannt vor, hast du vielleicht einen Link für mich, wo ich den Umgang mit "Sourcetabellen" nachlesen kann.

Denn aus dem Code kann ich es leider nicht umsetzen.:confused:
 
Bin ich schon so müde nach meinem Arbeitstag, oder übersehe ich da etwas? Warum willst Du denn wegen einem ORDER BY eine Subquerry einbauen?
 
Danke Dragosani für das Wort "Subquerry" jetzt weiß ich wenigstens nach was ich googeln kann ;)

Ah du meinst, ich könnte auch nach dem zugewiesenen Spaltennamen sortieren, in etwa so:

PHP:
      $showData = ("    SELECT
                           PLZ,
                           SUM({$row}) AS Gesamt
                        FROM
                           TABELLE
                        WHERE
                           Datum LIKE '%".$Laufzeit_Datum."'
                        GROUP BY
                           PLZ
                        ORDER BY
                           Gesamt");

//edit: dies funktioniert jedoch nicht. Also ich hab mir jetzt noch mal detaillierter "sql subquery from clause" angeguckt, bei "sql subquery where clause" versteh ich es, aber der der from nicht ganz.
Jedoch benötige ich die für mein Vorhaben.

Ich bin jetzt an dem Punkt angelangt, welchen yaslaw ganz zu Anfang schon vorgeschlagen hat:

PHP:
      $showData = (" SELECT
                        * ".// "Gesamt" hier mit dabei
                    "FROM
                       (SELECT
                           PLZ,
                           SUM({$row}) AS Gesamt
                        FROM
                           TABELLE
                        WHERE
                           Datum LIKE '%".$Laufzeit_Datum."'
                        GROUP BY
                           PLZ
                        ) ".// muss ein "AS NAME(Spalte1,Spalte2,...)" hin?
                    "ORDER BY
                        Gesamt");

Hoffe jemand kann mit die letzten Fragen klären, damit die Abfrage Reibungslos funktioniert!
 
Zuletzt bearbeitet:
Hast du meinen Link gesehen?
Die AS name-Klausel ist obligatorisch, weil jede Tabelle in einer FROM-Klausel einen Namen haben muss

Das Wort AS ist nicht nötig, jedoch einen Namen schon. In meinem Beispiel war das t.

gesamt ist in t.* enthalten
 
Gelesen habe ich es schon, und ich dachte ich vergebe für diese Tabelle nur per AS einen Namen, deshalb war es für mich etwas paradox.

Ich möchte aber alle Spalten der Tabelle selectieren, muss ich diese alle manuell eingeben oder kann ich mit "*" arbeiten?

Muss die Spaltendefinition in dem Query und SubQuerry erfolgen?

Danke nochmals für den Tipp.
 
Das Resultat des Subqueries ist für das darüberliegende Query wie eine Tabelle. du kannst also mi * alle felder herauslesen die du im Subquery ausgibst.

Die Spaltendefinition sollten so früh wie möglich definiert werden. Was geht also im Subquery.
Auch filtern sollte möglichst früh passieren. Wenn es geht also auch schon im Subquery.
 
Danke Leute, es klappt!
Jetzt erhalte ich mein gewünschtes Ergebnis, Danke yaslaw!
Bin trotzdem froh mich durch die SubQuerry's gelesen zu haben, statt deinen ersten Post einfach abzuschreiben! Brauch ich beim nächsten Mal hoffentlich nicht fragen!

Hab nur noch ein kleines Problem, wie ich in meiner Funktion nachher den Wert für die Sortierung optimal einlese.
Ich muss die Felder einzeln haben, da ich alle gern Summieren möchte, und SUM(*) nimmt er nicht!

Aber das sollte ich schon hinbekommen, vielen Dank
 

Neue Beiträge

Zurück