Advertisement
Guest User

Untitled

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