Twilo: Bedingte SQL Abfrage

Hallo,

ich hab bis jetzt folgende SQL Abfrage

SELECT DISTINCT k._id, k._parent_id, k._art, k._name
FROM kommentare AS k
LEFT JOIN ereignis AS e ON k._parent_id = e._id
LEFT JOIN anzeige AS a ON k._parent_id = a._id
WHERE k._freigeschaltet = "1"
AND k._geloescht = "0"
AND
(
  (
    k._art = "ereignis"
    AND e._geloescht = "0"
    AND e._freigeschaltet = "1"
  )
  OR
  (
    k._art = "anzeige"
    AND a._geloescht = "0"
    AND a._freigeschaltet = "1"
    AND a._vorgemerkt = "0"
  )
)
ORDER BY k._datum DESC
LIMIT 10

nun bin ich am überlegen, wie ich folgendes noch unterbringen kann

er soll je nachdem, was k._art für ein Wert hat, _url von ereignis oder anzeige abrufen

wie muss ich das anstellen?
denn ich muss doch das Select am Anfang schreiben

ich bräuchte also, wenn k._art = ereignis ist e._url
und wenn k._art = anzeige ist a._url

geht soetwas überhaupt?
bzw. wie müsste die SQL-Abfrage aussehen?

mfg
Twilo

  1. Huhu Twilo

    wie muss ich das anstellen?
    denn ich muss doch das Select am Anfang schreiben

    ich bräuchte also, wenn k._art = ereignis ist e._url
    und wenn k._art = anzeige ist a._url

    geht soetwas überhaupt?

    Welche Datenbank benutzt Du denn?
    Wenn es MySQL ist schau mal bei IF in der mysql-Doku.

    Dein Statement könnte dann ungefähr so ausschauen

    SELECT
      [...]
       IF (k._art = ereignis, e.url, a.url ) AS theURL
     [...]

    Man kann die IFs auch verschachteln.

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Hallo,

      wie muss ich das anstellen?
      denn ich muss doch das Select am Anfang schreiben

      ich bräuchte also, wenn k._art = ereignis ist e._url
      und wenn k._art = anzeige ist a._url

      geht soetwas überhaupt?

      Welche Datenbank benutzt Du denn?
      Wenn es MySQL ist schau mal bei IF in der mysql-Doku.

      sorry, hab ich ganz vergessen zu erwähnen
      bietet das nicht jede Datenbank an?

      Dein Statement könnte dann ungefähr so ausschauen

      SELECT
        [...]
         IF (k._art = ereignis, e.url, a.url) AS theURL
      [...]

      Man kann die IFs auch verschachteln.

      super, funktioniert :-)

      SELECT DISTINCT IF (k._art = "ereignis", e._url, a._url ) AS _url, k._id, k._setcard_id, k._art, k._name
      FROM kommentare AS k
      LEFT JOIN ereignis AS e ON k._parent_id = e._id
      LEFT JOIN anzeige AS a ON k._parent_id = a._id
      WHERE k._freigeschaltet = "1"
      AND k._geloescht = "0"
      AND
      (
        (
          k._art = "ereignis"
          AND e._geloescht = "0"
          AND e._freigeschaltet = "1"
        )
        OR
        (
          k._art = "anzeige"
          AND a._geloescht = "0"
          AND a._freigeschaltet = "1"
          AND a._vorgemerkt = "0"
        )
      )
      ORDER BY k._datum DESC
      LIMIT 10

      mfg
      Twilo