Здравствуйте, уважаемые специалисты! Помогите пожалуйста разобраться!
Составил такой запрос к базе
SELECT MAX(u.id) AS id,
b.title AS title,
DATE_FORMAT((b.date), '%d.%m.%Y') AS date,
SUBSTRING_INDEX((b.text), ' ', ". $num_words .") AS text,
u.id_news AS id_news,
u.photo AS photo
FROM ". IRB_DBPREFIX . $this->table ." AS b
LEFT OUTER JOIN ". IRB_DBPREFIX . $this->table ."photo AS u
ON b.id = u.id_news
GROUP BY `id_news`
Должен выводится список новостей и к каждой новости одну из фоток с максимальным id в группе. Имеются на данный момент три новости и две фотки к одной из новостей. Выводит одну новость с фото и другую без фото, а третья новость вообще не выводится. Целый день ломаю голову, где я делаю ошибку?
Alchemist
21.08.2014 - 14:46
в GROUP BY
А какую именно?
Alchemist
21.08.2014 - 16:49
выбираешь неправильное поле для группировки
Подскажите а какое поле лучше выбрать? В таблице news есть поля id, title, text, date. А в таблице news_photo, где фотографии, есть поля id, id_news и photo(тут адреса url к фоткам). Может новое поле какое-то вести или группировать по двум полям?
Alchemist
24.08.2014 - 11:51
искренне надеюсь что за прошедшие 3 дня ты успел найти нужное поле
)) спасибо, я сгруппировал по двум полям и на первый взгляд вроде работает, но вытаскивать из группы фотографий последнюю пока не получается, вот код
SELECT u.id AS id,
u.dateloadimg AS dateloadimg,
b.title AS title,
b.id AS bid,
DATE_FORMAT((b.date), '%d.%m.%Y') AS date,
SUBSTRING_INDEX((b.text), ' ', ". $num_words .") AS text,
u.id_news AS id_news,
u.photo AS photo
FROM ". IRB_DBPREFIX . $this->table ."photo AS u
RIGHT OUTER JOIN ". IRB_DBPREFIX . $this->table ." AS b
ON u.id_news = b.id
GROUP BY `id_news` , b.id
ORDER BY `date` DESC
Помогите пинком в нужном направлении)
Valick
24.08.2014 - 15:10
Цитата |
вытаскивать из группы фотографий последнюю пока не получается |
MAX(`поле datetime дата и время загрузки фото`)
_____________
Стимулятор ~yoomoney - 41001303250491
Логично, но не работает( не пойму вот почему нельзя группировать только по id_news ? (id_news это у меня внешний ключ, по которому связываются таблицы). Ведь это единственное поле с повторяющимися значениями, а если правильно понимаю, то если группировать, то по полю, где есть повторяющиеся значения, разве не так?
Составил такой запрос, но он выводит декартово произведение из обоих таблиц!
Где ошибаюсь?
SELECT
u.photo as photo,
u.dateloadimg as dateloadimg,
u.id_news as id_news,
b.title AS title,
b.text AS text,
b.id AS bid,
b.date AS date
FROM ". IRB_DBPREFIX . $this->table ." AS b
LEFT OUTER JOIN ". IRB_DBPREFIX . $this->table ."photo AS u
ON b.id IN
(SELECT id_news as id_news FROM ". IRB_DBPREFIX . $this->table ."photo WHERE dateloadimg IN
(SELECT MAX(dateloadimg) as dateloadimg FROM ". IRB_DBPREFIX . $this->table ."photo GROUP BY id_news))
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.