Просмотр темы
Нужна помощь с запросом
|
|
mishqa35 |
Опубликовано 11.01.2013 04:52
|
Опытный пользователь Сообщений: 307 Зарегистрирован: 04.01.2011 18:50 |
На скриншоте набросал пример таблицы Возможно ли одним запросов вытащить нужную инфу
Данный запрос выведет 1,3 Вот меня интересует возможно ли вывести одним запросом не id категорий а их названия, тоесть не 1,3 а ert,vbn
mishqa35 присоединено следующее:изображение:
|
|
|
Polarfox |
Опубликовано 11.01.2013 09:14
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
Архитектура хреновая походу... Хранить строкой иды через запятую... Переделать нельзя? Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
mishqa35 |
Опубликовано 11.01.2013 09:24
|
Опытный пользователь Сообщений: 307 Зарегистрирован: 04.01.2011 18:50 |
Переделать еще пока можно, но вроде везде делается так, везде где новость имеет более одной категории. Просто чтобы не делать по лишнему запросу на новость, чтобы узнавать категорию вот ищу нормальное решение. У каждой новости будет по 2-5 категорий, ну и собственно id\name категорий нужно будет узнавать. Пока придумал лишь одно решение, сделать один запрос в ядре и в масив передать все категории. А далее функцией выводить нужные. Этим я сделаю всего +1 запрос на все новости. Но все равно хотелось бы узнать мб есть другой способ как это лучше сделать. |
|
|
Rush |
Опубликовано 11.01.2013 10:53
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
везде где новость имеет больше одной категории, делается через таблицу связей. это many to many. так делается только во фьюжне, тут много чего через жопу. по сабже одним запросом никак, если и можно, то это будет запрос в запросе, грубо говоря все равно 2 запроса) |
|
|
Rush |
Опубликовано 11.01.2013 10:54
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
Пока придумал лишь одно решение, сделать один запрос в ядре и в масив передать все категории. А далее функцией выводить нужные. Этим я сделаю всего +1 запрос на все новости. в данном случае конечно решение, но это плохая практика - держать в памяти данные, которые даже могут не пригодиться |
|
|
mishqa35 |
Опубликовано 11.01.2013 11:05
|
Опытный пользователь Сообщений: 307 Зарегистрирован: 04.01.2011 18:50 |
Тут больше дело даже не в том что будет по 2 запроса, а в том что на главной странице, где выводятся например 10 новостей, будет 11 запросов только на новости и категории, не щитая по запросу на число комментариев. По поводу храненья в памяти даже не знаю, но сделать кеш к этому решению будет весьма не плохо. Посмотрю как сделано в других цсм, мб что придет на ум. |
|
|
Rush |
Опубликовано 11.01.2013 12:09
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
mishqa35 написал: Тут больше дело даже не в том что будет по 2 запроса, а в том что на главной странице, где выводятся например 10 новостей, будет 11 запросов только на новости и категории, не щитая по запросу на число комментариев. По поводу храненья в памяти даже не знаю, но сделать кеш к этому решению будет весьма не плохо. Посмотрю как сделано в других цсм, мб что придет на ум. вот комментарии можно элементарно посчитать при выборке новости. |
|
|
mishqa35 |
Опубликовано 11.01.2013 12:36
|
Опытный пользователь Сообщений: 307 Зарегистрирован: 04.01.2011 18:50 |
Элементарно ;) $result = dbquery( А по теме, хотелось бы все таки узнать как лучше сделать новость с энным кол-вом категорий. Как это все лучше организовать. |
|
|
Rush |
Опубликовано 11.01.2013 13:07
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
лучше не заморачиваться. одим запросом больше, одним меньше. не тот уровень. SELECT * FROM cats SELECT * FROM news LIMIT 10 while($cat=mysql_fetch_assoc($cats_result)) { $cats[$cat['cat_id']] = $cat; } while ($news_item=mysql_fetch_assoc($news)) { foreach (explode(",",$news_item['news_cats']) as $news_cat) { echo $cats[$news_cat]['cat_title']; } } запроса два. и врядли тут один будет лучше про many to many почитать можно http://www.tonyma...-many.html http://www.askdev...%BA%D0%B0/ |
|
|
Rush |
Опубликовано 11.01.2013 13:08
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
не люблю sql...
|
|
|
Polarfox |
Опубликовано 11.01.2013 19:08
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
У нас нет таких связей, есть только группы, права может, но это не совсем связи такого рода. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
Поделиться этой темой | |
Социальные закладки: | |
URL: | |
BBcode: | |
HTML: |
Перейти на форум: |