Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT tt_content.* FROM tt_content
- LEFT OUTER JOIN antwort a ON a.uid = tt_content.antwort
- LEFT OUTER JOIN feuserantwort ua ON ua.antwort = a.uid
- #ich möchte nur Inhaltselemente von einer bestimmten Seite (Page) kriegen
- WHERE tt_content.pid = [PID] AND
- #wenn an dem Element gar keine Aufgabe hängt, dann soll es immer angezeigt werden
- a.uid IS NULL OR
- (
- #Hier liegt das Performanceproblem - da ein User mehrmals Antworten abgeben kann, dann wollen wir NUR die neueste Antwort auswerten
- ua.uid = (SELECT MAX(uid) FROM feuserantwort WHERE feuser = [FEUSERID] AND antwort = a.uid) AND
- #Ich kann bestimmte Vergleichsoperatoren wählen, mit denen die Feuserantwort verglichen werden soll
- #0 gleich - 1 größer - 2 kleiner - 3 enthält - 4 zwischen - 5 ungleich - 6 nicht leer - 7 Checkboxen in MultiText - 8 leer
- CASE tt_content.antwortbedingung
- WHEN 0 THEN ua.freitext = tt_content.antwortbedingungswert
- WHEN 1 THEN CONVERT(ua.freitext, SIGNED INTEGER) > CONVERT(tt_content.antwortbedingungswert, SIGNED INTEGER)
- WHEN 2 THEN CONVERT(ua.freitext, SIGNED INTEGER) < CONVERT(tt_content.antwortbedingungswert, SIGNED INTEGER)
- WHEN 3 THEN ua.freitext LIKE CONCAT("%", tt_content.antwortbedingungswert, "%")
- WHEN 4 THEN ua.freitext BETWEEN
- CONVERT(
- SUBSTR(tt_content.antwortbedingungswert, 1, LOCATE("|", tt_content.antwortbedingungswert) - 1) ,
- SIGNED INTEGER
- )
- AND
- CONVERT(
- SUBSTR(tt_content.antwortbedingungswert, LOCATE("|", tt_content.antwortbedingungswert) + 1, LENGTH(tt_content.antwortbedingungswert) - 1),
- SIGNED INTEGER
- )
- WHEN 5 THEN ua.freitext != tt_content.antwortbedingungswert
- WHEN 6 THEN CHAR_LENGTH(ua.freitext) > 0
- WHEN 7 THEN ua.freitext LIKE "%\"true\"%"
- WHEN 8 THEN ua.freitext IS NULL OR ua.freitext = "" OR ua.freitext = "[]"
- END
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement