ArtMavir
@ArtMavir

Как правильно сформировать запрос к БД?

Есть три таблицы:
users_app
2015-01-04_15-50-48.png
contacts
2015-01-04_15-51-18.png
messages
2015-01-04_15-51-31.png
На вход скрипта мы получаем id юзера. Из базы нужно получить контакты этого юзера, к этим контактам из таблицы users_app подставить информацию по каждому юзеру(до этого момента я сделал с помощью join),
$this->db->where('id_user', $id_user);
        $this->db->join('users_app', 'users_app.id = contacts.id_contact');
        $data = $this->db->get('contacts');

а дальше нужно к каждому юзеру подставить информацию из таблицы messages последнего сообщения.

Голову ломаю уже несколько дней. Подскажите, пожалуйста.
P.S. В основе codeigniter, поэтому такой синтаксис запросов к бд.
  • Вопрос задан
  • 2310 просмотров
Решения вопроса 1
@Arik
Без дампа сложно, но попробуйте такой запрос в PMA, вместо $id_user только надо указать реальный id
SELECT
    a.*,
    b.*,
    c.*
FROM
    `contacts` AS a

LEFT JOIN
    `users_app` AS b
ON
    b.id = a.id_contact

LEFT JOIN
    `messages` AS c
ON
    c.`id` = 
        (
        SELECT 
            MAX(d.id) 
        FROM 
            `messages` AS d 
        WHERE 
            (
            d.id_user = a.id_user
            AND
            d.id_from_user = a.id_contact
            )
            OR
            (
            d.id_user = a.id_contact
            AND
            d.id_from_user = a.id_user 
            )
        )
WHERE
    a.id_user = $id_user
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы