2014-09-16 9 views
1

Я пытаюсь ПРИСОЕДИНИТЬСЯ к самой последней записи таблицы «corr» для остальной части моего QUERY. Вместо последней записи она присоединяется к первой записи.MySQL JOIN последняя запись

Любые предложения?

SELECT c.*, 
     cc.*, 
     com.*, 
     cor.corr_id, 
     cor.corr_method, 
     cor.corr_action, 
     cor.corr_description, 
     cor.corr_date_added 
FROM contacts c 
LEFT JOIN companies_contacts cc 
    ON c.contact_id = cc.contact_id 
LEFT JOIN companies com 
    ON com.company_id = cc.company_id 
LEFT JOIN 
    (SELECT contact_id, 
      corr_id, 
      MAX(corr_date_added) AS max_date_added 
    FROM corr 
    GROUP BY contact_id) y 
    ON y.contact_id = c.contact_id 
LEFT JOIN corr cor 
    ON cor.corr_id = y.corr_id 
GROUP BY cc.com_con_id 
ORDER BY c.contact_last_name ASC 
LIMIT 0, 25 

ЭТА РАБОТАЛ:

SELECT c.*, cc.*, com.*, cor.corr_id, cor.corr_method, cor.corr_action, cor.corr_description, cor.corr_date_added 
FROM contacts c 
LEFT JOIN companies_contacts cc ON c.contact_id = cc.contact_id 
LEFT JOIN companies com ON com.company_id = cc.company_id 
LEFT JOIN (SELECT max.contact_id, max.corr_id, MAX(max.corr_date_added) AS max_date_added 
FROM corr max GROUP BY max.contact_id) y ON y.contact_id = cc.contact_id 
LEFT JOIN corr cor ON max_date_added = cor.corr_date_added AND y.contact_id = cor.contact_id 
GROUP BY cc.com_con_id 
ORDER BY c.contact_last_name ASC LIMIT 0,25 
+0

Проблема заключается в том MAX будет возвращать только самое высокое значение corr_date_add поля. Он не возвращает строку, связанную с этим значением. – winternights83

ответ

0

Это сработало:

SELECT c.*, cc.*, com.*, cor.corr_id, cor.corr_method, cor.corr_action, cor.corr_description, cor.corr_date_added 
FROM contacts c 
LEFT JOIN companies_contacts cc ON c.contact_id = cc.contact_id 
LEFT JOIN companies com ON com.company_id = cc.company_id 
LEFT JOIN (SELECT max.contact_id, max.corr_id, MAX(max.corr_date_added) AS max_date_added 
FROM corr max GROUP BY max.contact_id) y ON y.contact_id = cc.contact_id 
LEFT JOIN corr cor ON max_date_added = cor.corr_date_added AND y.contact_id = cor.contact_id 
GROUP BY cc.com_con_id 
ORDER BY c.contact_last_name ASC LIMIT 0,25 
Смежные вопросы