Извлечение данных из трех таблиц, но с ошибкой синтаксиса SQL - PullRequest
0 голосов
/ 19 октября 2018

Я получаю данные из трех таблиц:

$result = $this->db->query("
    SELECT 
        `meetings`.*,
        `follow_up`.id as follow_up_id,
        `follow_up`.comment as follow_up_comment,
        `follow_up`.date as follow_up_date,
        `follow_up`.time as follow_up_time,
        SELECT first_name, last_name, user_mobile, useralt_mobile from users where id = user_id,
        (SELECT address FROM day_location WHERE `meetings`.assigned_to_id = user_id AND `follow_up`.date = date LIMIT 1) AS location_name
        FROM meetings
        LEFT JOIN follow_up ON `meetings`.id = `follow_up`.`meeting_id`
        WHERE follow_up.`date` BETWEEN '{$fromDate_formated}' AND '{$toDate_formated}'
            " . ($user_id > 0 ? " AND `meetings`.assigned_to_id = '{$user_id}'" : '') . "
    ORDER BY `follow_up`.id DESC
");

Ошибка:

Произошла ошибка базы данных
Номер ошибки: 1064

У вас естьошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'SELECT first_name, last_name, user_mobile, useralt_mobile от пользователей, где id =' в строке 7

SELECT meetings. *, follow_up .id как follow_up_id, follow_up .comment как follow_up_comment, follow_up .date как follow_up_date, follow_up .time как follow_up_time, SELECT first_name, last_name, user_mobile, useralt_mobile от пользователей, где id = user_id, (SELECT адрес FROM day_locationWHERE meetings .assigned_to_id = user_id AND follow_up .date = дата LIMIT 1) AS location_name ИЗ собраний ВЛЕВО ПОДКЛЮЧИТЬ follow_up ON meetings .id = follow_up. meeting_id WHERE follow_up. date BETWEEN '2018-10-01 'И' 2018-10-31 'И meetings .assigned_to_id =' 1 'ЗАКАЗАТЬ follow_up .id DESC

Не могли бы вы помочь?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

для получения информации о пользователях вы должны использовать соединение

$result = $this->db->query("
        SELECT 
            `meetings`.*,
            `follow_up`.id as follow_up_id,
            `follow_up`.comment as follow_up_comment,
            `follow_up`.date as follow_up_date,
            `follow_up`.time as follow_up_time,
            users.first_name, 
            users.last_name, 
            users.user_mobile,
            users. useralt_mobile, 
            (SELECT address FROM day_location WHERE `meetings`.assigned_to_id = user_id AND `follow_up`.date = date LIMIT 1) AS location_name
        FROM meetings
        LEFT JOIN follow_up ON `meetings`.id = `follow_up`.`meeting_id`
        LEFT JOIN users on users.id = `meetings`.assigned_to_id 
        WHERE follow_up.`date` BETWEEN '{$fromDate_formated}' AND '{$toDate_formated}'
            " . ($user_id > 0 ? " AND `meetings`.assigned_to_id = '{$user_id}'" : '') . "
        ORDER BY `follow_up`.id DESC");
0 голосов
/ 19 октября 2018

Вам необходимо заменить это:

SELECT first_name, last_name, user_mobile, useralt_mobile from users where id = user_id,

На это:

(SELECT first_name, last_name, user_mobile, useralt_mobile from users where id = user_id),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...