Подскажите как организовать данные (Mysql)

12
D
На сайте с 20.09.2010
Offline
175
1079

Есть таблица с объявлениями. Приблизительно с такой структурой:

Id - уникальное поле объявления

date_in - дата добавления

RUB - рубрика объявления

SUB - подрубрика объявления

Text - объявление

По умолчанию они выводятся order by date_in desc

Стоит задача вывести объявления в определенном, зафиксированном мной порядке в определенной рубрике или подрубрике. (Нужно сохранить нужную рубрику и порядок)

Насчет порядка все просто - ввести поле por и выводить order by por desc, date_in desc

Как сохранить рубрику/подрубрику? И как выводить (каким запросом) список объявлений в рубрике с зафиксированными мной объявлениями?

S
На сайте с 30.09.2016
Offline
469
#1

А зачем Вы имена столбцов в верхнем регистре пишете? Как-то не принято так делать, всё равно мускуль этого не понимает.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
S3
На сайте с 29.03.2012
Offline
367
#2

Ответ на ваш вопрос находиться на первых двух страницах любого учебника по мускле, если вы планируете писать свои запросы, с него и начните - это базовые команды - фильтрация по полям. Советовал бы в рубриках хранить только ID, названия выносить в отдельную таблицу. Цифровые запросы будут быстрее выполняться.

И такой, чисто практический совет - называйте поля сразу грамотно, не ленитесь слова писать.Ну что такое date_in - вы потом не поймете что хотели этим сказать))) Например, я дату создания записи храню в поле created_at рубрика - blog_cathegory or blog_cat и так далее.Потом проще запросы писать

dma84
На сайте с 21.04.2009
Offline
168
#3

Автору уже намекали в одной из его тем, как лучше организовать данные, но он, видимо, либо читать не умеет от слова совсем, либо забыл, что тему создавал.

D
На сайте с 20.09.2010
Offline
175
#4
Советовал бы в рубриках хранить только ID, названия выносить в отдельную таблицу.

А есть ли смысл выносить названия? Ведь это еще 1 доп. запрос к таблице с названиями.. При выводе 20 записей соответственно будет еще +20 запросов чтобы вывести название рубрики..

Еще одиин вопрос: если я захожу в рубрику site.com/board/avto/

то стоит искать записи по урлу avto или по его id ? (ведь чтобы узнать id рубрики Авто, нужно сделать еще 1 запрос к таблице с категориями)

В % соотношении на сколько дольше выполняется запрос?

M
На сайте с 04.12.2013
Offline
223
#5

Лучше один простой запрос сделать, чем 100 раз присоединять одно и тоже.

---------- Добавлено 11.10.2016 в 11:20 ----------

В принципе можете делать слаги двухкомпонентные, например avto/sedan. Мы для подкатегорий такое иногда практикуем, хотя по сути это чисто визуальный эффект.

---------- Добавлено 11.10.2016 в 11:41 ----------

Но у подкатегорий есть поле обратной связи с категорией (обычно называется parent или division). У «объявлений» связь только с подкатегорией. Таблица подкатегорий присоединяется к объявлениям автоматом (а значит и поле division) для всех массовых запросов объявлений кроме запроса к конкретной подкатегории. В последнем случае подкатегория выбирается отдельным предварительным запросом (для полноты картинки фактические данные подкатегории подставляются в каждую строку результирующей выборки основного запроса с объявлениями).

---------- Добавлено 11.10.2016 в 11:57 ----------

Что касается основного вопроса топика, если конечно я его правильно понял, то почему вам просто не завести у категорий/подкатегорий спец. флаг, указывающий на необходимость выполнения «особой» сортировки вместо дефолтной.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
SeVlad
На сайте с 03.11.2008
Offline
1609
#6
datum:
Приблизительно с такой структурой:

Id - уникальное поле объявления
date_in - дата добавления
RUB - рубрика объявления
SUB - подрубрика объявления
Text - объявление

Мы это видели:

datum:
Id | Rub_id | Sub_id | Rub_name | Sub_name

1 | 1 | 1 | Транспорт | Легковые
2 | 1 | 2 | Транспорт | Грузовые
3 | 2 | 3 | Строительство | Бетон
4 | 2 | 4 | Строительство | Штукатурка
5 | 3 | 5 | Отдых | Отели

Та тот же косяк, тебе уже говорили

Ок, попробую и я.

(Как вариант) Выкинуть нафик все SUB, и добавить поле PARENT_ID (ИДшник родителя).

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
M
На сайте с 04.12.2013
Offline
223
#7

P.S. Порядок по-английски будет order ;) Поле с датой создания можно назвать просто date – по-моему вполне понятно, что это дата создания, если конечно у объявления нет др. дат.

Aisamiery
На сайте с 12.04.2015
Offline
319
#8

Я советую ТС погуглить и понять что такое третья нормальная форма

Скорость работы mysql зависит не от количества запросов, а от скорости их выполнения и latency.

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
S
На сайте с 30.09.2016
Offline
469
#9
datum:
если я захожу в рубрику site.com/board/avto/
то стоит искать записи по урлу avto или по его id ?

Всё-таки правильнее распарсить url и вытащить из него id, с которыми дальше и работать. Представьте себе, что Вы ошиблись и написали не "автомобиль", а "автамабиль". И что, всю таблицу переписывать? А id - он цифровой, его менять ни к чему. То же самое и с родительскими элементами: задумали одну букву в названии изменить - и вся таблица поехала, а если оставите только id - то исправить надо только 1 строку в таблице рубрик.

Отвечая на вопрос "как организовать данные", могу посоветовать создать отдельные таблицы: для самих объявлений, для субкатегорий и для категорий. Тогда будет гораздо проще изменять названия и перебрасывать материалы из одного раздела в другой.

totamon
На сайте с 12.05.2007
Offline
437
#10

а я, отступлю от правил этого славного форума не создавать холиваров, и спрошу у ТС зачем вам это все? зачем писать доску объявлений, ничего не понимая? есть много готовых скриптов open source, бери, разбирайся и запускай проект... а если вы учитесь, то учитесь по учебникам и статьям, или коду рабочих скриптов... задавая неправильные вопросы на форуме ничему хорошему вы не научитесь))

и подумайте еще раз оно вам надо?

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий