Mysql Как составить запрос

MCB

Новичок
Всем привет!

Есть 2е таблицы:

таблица объявлений (ads)
ads_id
region_id
cat_id
date_update
content

и дополнительная таблица (ads_regions) - связка объявления с ТОЛЬКО дополнительными! регионами, в которых может быть объявление, date_update - разные!
ads_id,
region_id
date_update

Как вывести объявления определенного региона и определенной категории, отсортированные по date_update?


Или такой вариант проектирование базы не правильно?
- По этому варианту к примеру 100000 объявлений-строк в базе + 1000 строк доп.регионы.
- Или второй вариант, все связки регионов вынести в другую таблицу, тогда в таблице объявлений будет
100000 и в таблице связок будет 101000 строк.
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
извеняюсь за глупый вопрос, зачем говоришь нужна 2я таблица?
 

MCB

Новичок
Каждое объявление относиться к определенному региону. Но 1% объявлений, помимо определенного региона, относиться к нескольким другим регионам.
 

WMix

герр M:)ller
Партнер клуба
тогда полям region_id и date_update нечего делать в ads и сразу все становится понятно
 

MCB

Новичок
т.е. лучше, в общей сложности 201000 записей, чем 101000 запись?
 

WMix

герр M:)ller
Партнер клуба
у тебя записи region_id и date_update 100000раз в ads и 1000 в ads_regions итого 101000 я предлагаю 100000 из ads перенести в ads_regions итого 101000
твоя математика мне не понятна. при чем тут строки?
 

MCB

Новичок
не понимаю, как это можно использовать?, если все связки "объявления/регионам" будут с разными id, и в одних из них другие данные объявления
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
зачем, если регион пойска известен?
 

WMix

герр M:)ller
Партнер клуба
твой вопросительный взгляд непонятен! что у тебя не получается?
 

MCB

Новичок
Если все объединить в одну таблицу, то на 1000 строк (для доп регионов), нужно:
1) дублировать контент
2) группировать, если ищется не по региону
либо, еще как-то, о чем я не понял как вы пишите использовать это дело?
 

WMix

герр M:)ller
Партнер клуба
я говорил про 2 таблицы!
2) группировать, если ищется не по региону << трудно сказать, нужно ли групировать если не по региону, это разные обьявления если даты разные!
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
если дата разная, для одной и тойже записи, но разных регионов, - то и дату перенести тоже, если одинаковая то только регионы
 

MCB

Новичок
дата разная, т.е. второй вариант правильный, пусть даже на 100к строк больше выходит?
" тогда в таблице объявлений (ads) будет 100000 строк и в таблице ads_regions будет 101000 строк"?
 

WMix

герр M:)ller
Партнер клуба
да (что тут поделаешь если это различные данные)
Код:
таблица объявлений (ads)
ads_id
cat_id
content 
можно добавить дату добавления обьявления

и дополнительная таблица (ads_regions)
ads_id,
region_id
date_update
 

MCB

Новичок
ищется быстро, если искать WHERE ar.region_id=1000

SELECT *
FROM ads AS a
JOIN ads_regions AS ar ON a.id=ar.ads_id
WHERE
ar.region_id=1000 && a.cat_id=5

а если сделать выборку без условия region_id= (но сортировка по date_update), как вывести объявления? Если GROUP BY a.id, то долго начинает выполняться. Либо в ads прописывать date_update уже отсортированное.
 

WMix

герр M:)ller
Партнер клуба
покажи create table для обоих таблиц
а также результат explain SELECT * ...
если делать GROUP BY a.id то дата на каждое обьявления a.id "одна из" всех результатов, как кстати и регион этого обьявления. это осознаешь?
 
Последнее редактирование:
Сверху