Hallo,
ich habe ein kleines Problem beim erstellen einer Query. Normalerweise würde ich das ganze über eine SP lösen, leider stehen die in diesem Fall auf einem Shared-Hosting Server nicht zur Verfügung.
Mein Ansatz:
Wenn ich in den subSelect direkt die Werte von `tabUpd`.`person_id` und `tabUpd`.`date_start` eingebe bekomme ich genau das erwartete Ergebnis, allerdings funktioniert das Update nicht, da die Werte zwar vom Update in das SubSelect, aber nicht mehr weiter an das SubSubSelect gereicht werden. Hat jemand eine Idee? Danke schon mal für Eure Zeit das anzusehen!
Erklärung Szenario: Es gibt Personen (person_id), die Aktionen (zum Zeitpunkt date_start) durchführen. Jede Aktion einer Person ist einer Kategorie (category_id) zugewiesen. Die Teilnahme einer Persion an einer Aktion wird einem Verhalten zugewiesen (behavior).
Für behavior = 2 muss die category aus der vorhergegangenen category der letzten Aktionen berechnet werden, nach folgenden regeln: Die category ist gleich der vorhergegangenen (letzte) category, es sei denn die beiden categorys davor (2. und 3.-letzte) haben den gleichen Wert, dann gilt dieser.
ich habe ein kleines Problem beim erstellen einer Query. Normalerweise würde ich das ganze über eine SP lösen, leider stehen die in diesem Fall auf einem Shared-Hosting Server nicht zur Verfügung.
Mein Ansatz:
Code:
UPDATE `tableFoo` as `tabUpd` SET `tabUpd`.`category_id` = ( SELECT `group_id` FROM ( SELECT `person_id`, `category_id`, `date_start` FROM `tableFoo` `tabSS` WHERE `tabSS`.`behavior` = 1 AND `tabSS`.`person_id` = `tabUpd`.`person_id` AND `tabSS`.`date_start` < `tabUpd`.`date_start` LIMIT 3 ) as `subsubSelect` GROUP BY `category_id` ORDER BY COUNT(*) DESC, MAX(`date_start`) DESC LIMIT 1 ) WHERE `tabUpd`.`behavior` = 2
Erklärung Szenario: Es gibt Personen (person_id), die Aktionen (zum Zeitpunkt date_start) durchführen. Jede Aktion einer Person ist einer Kategorie (category_id) zugewiesen. Die Teilnahme einer Persion an einer Aktion wird einem Verhalten zugewiesen (behavior).
Für behavior = 2 muss die category aus der vorhergegangenen category der letzten Aktionen berechnet werden, nach folgenden regeln: Die category ist gleich der vorhergegangenen (letzte) category, es sei denn die beiden categorys davor (2. und 3.-letzte) haben den gleichen Wert, dann gilt dieser.
Kommentar