2016-10-12 13 views
-1

Suche nach einer Lösung, Kontakte auf Zeit bis zum nächsten Anruf basierend auf Bestellung, Meeting oder Aufgabe mit dem Kontakt im ZusammenhangMySql Sortieren nach dem größten drei Daten aus drei verschiedenen Spalten aus 3 verschiedenen Tabellen in YII2

$query->andWhere('ORDER By GREATEST(MAX(UNIX_TIMESTAMP(DATE_FORMAT(CONCAT(meeting.from_date, " ",meeting.from_hour), "%Y-%m-%d %H:%i"))), MAX(UNIX_TIMESTAMP(DATE_FORMAT(CONCAT(call.call_date, " ",call.call_hour), "%Y-%m-%d %H:%i"))) , MAX(UNIX_TIMESTAMP(DATE_FORMAT(task.due_date, "%Y-%m-%d %H:%i")))) DESC '); 

aber ich erhalte die folgende Datenbank Ausnahme

  Syntax error 
    OR 
    accessVIOLATION: 1064 you have an error IN your sql syntax;CHECK the manual that corresponds TO your mysql server version FOR the RIGHT syntax TOUSE near 'ORDER By GREATEST(MAX(UNIX_TIMESTAMP(DATE_FORMAT(CONCAT(meeting.from_date, ' at line 1\nthe sql being executedWAS: 

SELECT Count(*) FROM (SELECT DISTINCT `contact`.* 
          FROM   `contact` 
          LEFT JOIN  `contact_tag` 
          ON    `contact`.`id` = `contact_tag`.`contact_id` 
          LEFT JOIN  `favorite` 
          ON    `contact`.`id` = `favorite`.`contact_id` 
          LEFT JOIN  `contact_reach` 
          ON    `contact`.`id` = `contact_reach`.`contact_id` 
          LEFT JOIN  `meeting` 
          ON    `contact`.`id` = `meeting`.`contact_id` 
          LEFT JOIN  `call` 
          ON    `contact`.`id` = `call`.`contact_id` 
          LEFT JOIN  `task` 
          ON    `contact`.`id` = `task`.`contact_id` 
          WHERE   ((`is_deleted`=0)) 
          AND (ORDER BY greatest(max(unix_timestamp(date_format(concat(meeting.from_date, " ",meeting.from_hour), "%Y-%m-%d %H:%i"))), max(unix_timestamp(date_format(concat(call.call_date, " ",call.call_hour), "%Y-%m-%d %H:%i"))) , max(unix_timestamp(date_format(task.due_date, "%Y-%m-%d %H:%i")))) DESC)) `c` 

Wie dieses Problem zu lösen?

+0

Siehe http://meta.stackoverflow.com/questions/333952/why-sollte-ich-biete-eine-mcve-für-was-scheint-mir-zu-eine-sehr-einfache-sql-Abfrage – Strawberry

+0

@Strawberry, das ist keine Antwort auf meine Frage – Dan

+0

was ich will, ist den Fehler in der folgenden Region zu lösen AND (ORDER BY größte (max (unix_timestamp (date_format (concat (meeting.from_date, "", meeting.from_hour), "% Y-% m-% d% H :% i "))), max (unix_zeitmarke (datum_format (concat (call.call_date," ", call.call_hour),"% Y-% m-% d% H:% i "))), max (unix_zeitmarke (Datum_format (t ask.due_date, "% Y-% m-% d% H:% i")))) DESC)) – Dan

Antwort

0

Sie verwenden $ query-> andWhere, um eine Bestellung zu verwalten. Das ist falsch (das eine gemischte wo/und Klausel mit order by-Klausel erzeugen, die die sintax Fehler erzeugen)

Sie sollten query- $ verwenden> orderBy

$query->orderBy('ORDER BY greatest( 
        max(unix_timestamp(date_format(concat(meeting.from_date, " ",meeting.from_hour), "%Y-%m-%d %H:%i"))), 
        max(unix_timestamp(date_format(concat(call.call_date, " ",call.call_hour), "%Y-%m-%d %H:%i"))) , 
        max(unix_timestamp(date_format(task.due_date, "%Y-%m-%d %H:%i")))) DESC') ; 
Verwandte Themen