Как ограничить несколькими категориями (динамически) в одном операторе SQL? - PullRequest
0 голосов
/ 14 февраля 2010

Вот текущий SQL: http://www.copypastecode.com/22205/

Требуется 70 новых строк из табличных объявлений.

Но для каждой записи mr.region_id из объединенной таблицы map_regions не требуется надлежащее количество (например, 5) строк.

Например, если я добавлю 50 объявлений в одном регионе, то все 50 из них займут и оставят 20 мест для остальных регионов.

Пожалуйста, помогите мне обновить текущий SQL, чтобы он занимал 5 строк из табличных объявлений для каждого mr.region_id в таблице map_regions.

1 Ответ

0 голосов
/ 14 февраля 2010

Попробуйте

SELECT a.id,a.country,a.region,a.rajons,a.town AS town_id,a.pagasts,i.t0_1, mt.town, mp.pagasts, c.link
FROM ads a 
INNER JOIN categories c ON a.category = c.cat_id
RIGHT JOIN images i ON a.id = i.ad_id
LEFT JOIN (select * from map_regions where region_id = a.region LIMIT 5) as mr
LEFT JOIN map_towns mt ON a.town = mt.town_id
LEFT JOIN map_pagasts mp ON a.pagasts = mp.pagasts_id
WHERE a.expire >= ' . $current->get() . '
ORDER by a.id DESC
LIMIT 70
...