• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Summe aller vorheriger Datensätze

Crashdown

New member
Hallo,
schreibe grade an einer kleinen Seite, die mir und meinen Freunden das Austauschen von Musik erleicherten soll. Das bringt mich mal wieder zu einem kleinen MySQL Problem. Die Datensätze werden dynamisch geladen. Scrollt der User beispielsweise (sehr schnell, nicht mit dem Mausrad) nach ins untere Drittel der Mediathek Übermitteltt JS den ScrollY Wert des Fensters und PHP ermittelt daraus und der Darstellunshöhe eines Titels (Zeile) welche Datensätze an JS gesendet werden müssen. Haben alle Tracks die selbe Höhe ist das kein Problem. Sagen wir aber jeder Track kann unterschiedliche Höhenwerte haben, die im Datensatz gespeichert sind wirds tricky. Ich suche also eine SQL Anweisung, die mir den Datensatz liefert bei dem die Summe der Höhenwerte aller vorherigen Datensätze den Wert ScrollY überschreitet.

Etwas so:

Select id, title,... FROM tracks WHERE SUM(height) >= 10000 LIMIT 30

Ist sowas möglich?
 
Sowas ist möglich, aber ein ziemlicher Performancefresser: du machst deine Summe über ein Subselect, in dem du alles Datensätze auswählst, deren id kleiner als die Aktuelle ist.

Ich würde bei gleichhohen Darstellungen bleiben.
 
Ich suche also eine SQL Anweisung, die mir den Datensatz liefert bei dem die Summe der Höhenwerte aller vorherigen Datensätze den Wert ScrollY überschreitet.
Also wenn Du tatsächlich bei diesem fragwürdigen Ansatz bleiben willst, dann ist Dein bester Ansatz das Speichern der Position in einer extra Spalte. Bei Einfüge- und Löschoperationen muss man dann zwar die Positionen aller dahinterliegenden Einträge korrigieren, aber das läßt sich mit einem einzigen SQL-Befehl durchführen.
Deine Abfrage wird dadurch trivial.
Nur Deinen bereits existierenden Datenbestand musst Du einmalig automatisiert anpassen.
 
Daran dachte ich auch schon, nur dass es auch verschiedene OrderBys geben wird wie zum Beispiel nach Spielzeit, Name, Dateigröße... sodass ich für jede dieser Ordnungen die Position abspeichern sowie bei Lösch- und Einfügeoperationen die der dahinterliegenen Datensätze ändern müsste. Das ist doch dann auch ein ziemlich Aufwand oder?
 
Warum ändert eine Order die Darstellungs-Höhe eines Titels?
Es muss doch lediglich die Summe aller Höhen bis zur aktuellen Position ermittelt werden - halt abhängig von der Order.
Oder ändert die Order auch die Darstellung?
Wenn nicht, muss lediglich eine einzige Höhe festgehalten werden, die - wie Albu schon klärte - automatisiert eingetragen werden kann.
 
Zurück
Oben