2016-06-11 14 views
0

So habe ich eine Joomla-Site und in der Joomla-Dokumentation kann ich nichts finden, was mit MySQLs IF, ELSE-Funktion innerhalb einer Abfrage zu tun hat.Joomla PHP MySQL Abfrage zur Verwendung von MySQL IF-Funktion

Der Teil der Abfrage ich brauche eine if-Anweisung in MySQL ist hier.

$query->where($db->quoteName('container').' != 1'); 

Es sollte so etwas wie dies tun:

$query->where('IF '.$db->quoteName('server_number').' != '.$number.' THEN '$query->where($db->quoteName('container').' != 1');' END'); 

Wenn die $ Nummerneingabe nicht mit den server_number Spaltendaten überein dann ein, wo Anweisung an die MySQL-Abfrage hinzuzufügen.

Voll MySQL Query:

SELECT a.*,ext.media_type 
FROM database_hwdms_processes AS a 
LEFT JOIN database_hwdms_media AS media ON media.id = a.media_id 
LEFT JOIN database_hwdms_ext AS ext ON ext.id = media.ext_id 
WHERE (a.status = 1 || a.status = 3) AND a.attempts < 5 AND `container` != 1 AND 
server = 1 
ORDER BY a.media_id ASC 

Willst du ein "! IF server_number = 1 THEN WHERE Container = 1 END" würde bedeuten, ersetzen! "UND container = 1"

+0

Und genau was funktioniert nicht, wenn Sie den obigen Code mit IF und ELSE verwenden? –

+0

Ich fügte die vollständige MySQL-Abfrage zu meiner Frage die Ausgabe mit jeder einzelnen IF-Methode, die ich versuche nur Fehler. MySQL-Syntax ist falsch. – C0nw0nk

Antwort

0

ich hinzufügen fand einen besseren Weg, um mein Problem mit MySQL zu lösen

ODER ||

Funktion

diese So wurde mein fester Code:

PHP:

$query->where('('.$db->quoteName('server_number').' = '.$number.' || '.$db->quoteName('container').' != 1)'); 

Im Klar MySQL Text:

SELECT a.*,ext.media_type 
FROM database_hwdms_processes AS a 
LEFT JOIN database_hwdms_media AS media ON media.id = a.media_id 
LEFT JOIN database_hwdms_ext AS ext ON ext.id = media.ext_id 
WHERE (a.status = 1 || a.status = 3) AND a.attempts < 5 AND (`server_number` = 1 || `container` != 1)AND 
server = 1 
ORDER BY a.media_id ASC