2011-01-13 8 views
-1

Schnell Beispiel hinzufügen, um die Frage zu erhalten begonnen:Wie Zeilenwerte basierend auf Anzeige innerhalb einreihigen

Temporäre Tabelle Beispiel

ID | value | Flag | parent 
------------------------------- 
1 | 12.50 | 1 | 19 
2 | 13.50 | 1 | 20 
3 | 14.50 | 2 | 1 
4 | 15.50 | 1 | 21 
5 | 16.50 | 1 | 22 
6 | 17.50 | 1 | 23 
7 | 18.50 | 2 | 2 
8 | 19.50 | 1 | 24 

schließlich mag ich einen Tisch suchen, für jede ID mit einem Flag von 2, nimm diesen Wert und füge ihn der zugehörigen Eltern-ID hinzu.

Die idealen Ergebnisse würden zurück:

ID | value | Flag | parent 
------------------------------- 
1 | 27 | 1 | 19 
2 | 32 | 1 | 20 
4 | 15.50 | 1 | 21 
5 | 16.50 | 1 | 22 
6 | 17.50 | 1 | 23 
8 | 19.50 | 1 | 24 

wo 3 und 7 entfernt wurden, mit ihren Werten in ihren Stammwert (1 bzw. 2) gegeben. Beachten Sie, dass das übergeordnete Feld bereits aus einem inneren JOIN mit einer anderen Tabelle gezogen wird (die obige Tabelle wird basierend auf zwei Tabellen generiert).

Die obige Tabelle wird als temporäre Tabelle erstellt, so dass keine Aktualisierungen oder Tabellenänderungen vorgenommen werden können oder werden. Ich möchte eine einzelne Select-Anweisung erstellen.

Antwort

-1

Aktualisiert.

Vorausgesetzt, es sind die einzig möglichen Werte für Flag sind 1 und 2:

INSERT temp_table (ID, Value, Flag, Parent) 
SELECT MAX(IF(Flag = 1, ID, 0)), SUM(Value), 1, MAX(IF(Flag = 1, ParentID, 0)) 
FROM generated_query 
GROUP BY IF(Flag = 1, ID, ParentID) 

Je nachdem, wie Sie Ihre Abfrage generieren, können Sie eine bessere Leistung mit einem LEFT JOIN stattdessen bekommen.

+0

nicht auf etwas zu aktualisieren - dies ist eine temporäre Tabelle für andere Methoden verwendet wird. Die Tabelle, die ich oben gezeichnet habe, existiert nicht und wird niemals außerhalb des temporären Status sein. – JM4

+0

Es gibt keinen Einfüge- oder Aktualisierungsbefehl, wenn die Tabelle von Grund auf neu erstellt wird und in einer einzigen PHP-Anweisung und einem einzigen MySQL-Aufruf verwendet wird. Die obige Tabelle zeigt, was durch die einzelne Abfrage generiert wird - ich möchte darauf bauen. Es ist sicher anzunehmen, dass die Flagge an anderer Stelle existiert, aber es gibt keine Tabelle. Die Tabelle wird sofort in Zeilen übersetzt und mit PHP zur Bearbeitung sortiert. – JM4

+0

@ jm4 also benutze einfach den 'SELECT' Teil der Abfrage .. oder poste deinen PHP Code. Danke für den Downvote! –

Verwandte Themen