Оператор SQL: событие календаря, связанное с контактом - PullRequest
0 голосов
/ 14 июня 2019

Я нахожусь в процессе разработки запроса SQL, чтобы позволить HeidiSQL отображать записи календаря и подключенные контакты.

Встречи включены в таблицу vtiger_activity, а контакты - в таблицу vtiger_contactdetails.Соединение существует через таблицу "vtiger_crmentity".

SELECT a.subject
     , a.activitytype
     , a.date_start
     , a.due_date
     , a.time_start
     , a.time_end
     , d.firstname
     , d.lastname
  FROM vtiger_activity a
  LEFT 
  JOIN vtiger_crmentity c
    ON c.crmid = a.activityid
  LEFT 
  JOIN vtiger_contactdetails d
    ON d.contactid = c.crmid
 WHERE a.due_date >= '2019-05-18' AND a.date_start <= '2019-05-23'

Результат запроса: он показывает даты в периоде времени, но в столбцах, где должен отображаться контакт, везде только NULL. Запрос, который мне нужен для приложения для Android.Я ожидал имя и фамилию, потому что данные существуют.

Кто-нибудь знает, где у меня есть моя ошибка?

Всегда спасибо за вашу помощь

Vtiger 7.1.0 and HeidiSQL ER-Diagram

1 Ответ

0 голосов
/ 14 июня 2019

Ваши LEFT JOIN находятся в неправильном порядке. Если вам нужны имена, они взяты из таблицы сведений, и это должна быть первая таблица в FROM. Вам также нужно будет переместить условия в ON.

Примерно так:

SELECT d.firstname, d.lastname, a.subject, a.activitytype
       a.date_start, a.due_date, a.time_start, a.time_end
FROM vtiger_contactdetails d LEFT JOIN
     vtiger_crmentity c
     ON d.contactid = c.crmid LEFT JOIN
     vtiger_activity a
     ON c.crmid = a.activityid AND
        a.due_date >= '2019-05-18' AND
        a.date_start <= '2019-05-23';
...