Выборка одной статьи каждого автора

Baton

Новичок
fixxxer
А почему мы не получим NULL если перенесем из ON в WHERE?
 

WMix

герр M:)ller
Партнер клуба
WMix
в твоем случае придется сделать еще один запрос, чтобы по max(id) достать тексты сообщений. или пытаться извратиться с подзапросами, а с ними в mysql беда
я твой скриптик понял,
то что написал fixxxer подходит для всего...
очень прикольно...
"and ar1.id > ar.id" ты поместил в ON а не в WHERE?
важно понять как работает left join, ВСЕ from articles к которым привязка on (ar1.author_id = ar.author_id and ar1.id > ar.id) ... на этом этапе мы еще ничего не потеряли! там таблица длиною в x² записей (погорячился конечно... ar1.author_id = ar.author_id )...
и тут нужно понять где стоят NULL.. ar1.id > ar.id везде где большего числа мы не нашли.... они и интересные!
 

mihdan

Новичок
В результате получаем рабочий вариант:

PHP:
           SELECT
              p.id_person,
              p.photo_120x90,
              n.id  AS  id_new,
              n.announcement_ru AS  announcement,
              CONCAT_WS   (' ', p.name_ru, p.surname_ru) AS author
            FROM crm_news AS  n
              LEFT JOIN crm_news AS n1 ON (
                n.id_person = n1.id_person AND
                n1.`date` > n.`date`
              )
              LEFT JOIN crm_persons AS p ON n.id_person = p.id_person
            WHERE
              n1.`date` IS NULL AND
              n.type = 6 AND
              n.id_person > 0 AND
              p.photo_120x90 <> '' AND
              p.surname_ru <> '' AND
              p.name_ru <> '' AND
              n.name_ru <> '' AND
              n.announcement_ru <> ''
            ORDER   BY  n.`date`  DESC
            LIMIT   6
Все ли правильно я запилил? Запрос выполняется за 0.01 секунды при наличии индексов на полях date, id_person
 

fixxxer

К.О.
Партнер клуба
ну если правильно работает значит правильно :)
на первый взгляд вроде как похоже на правду
 

fixxxer

К.О.
Партнер клуба
fixxxer
А почему мы не получим NULL если перенесем из ON в WHERE?
получим, да не те ) джойны разные совсем

я хз как это доходчиво объяснить, представь себе распечатанные екселевские листы, порезанные на строки, которые подклеиваешь по условиям. я когда туплю такой мысленный эксперимент провожу
 

mihdan

Новичок
ну если правильно работает значит правильно :)
на первый взгляд вроде как похоже на правду
Я имел ввиду, может что-то надо поправить, поменять строки местами. Сейчас через EXPLAIN потюню. Имею результат - http://clip2net.com/s/2qhiv нормально?

PS: Спасибо за подсказку и здоровую критику.
 
Сверху