За последние 24 часа нас посетили 60349 программистов и 1683 робота. Сейчас ищут 1253 программиста ...

Организация выборки из БД

Тема в разделе "PHP для новичков", создана пользователем ALEXU, 11 фев 2012.

  1. ALEXU

    ALEXU Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Russia
    Доброго времени суток.

    Не знаю как лучше сделать.
    Есть основной запрос на выборку, скажем статей в цикле.
    К этим статьям есть возможность добавить их рейтинг, автора, комментарии(количество), категорию, файлы и т.д...
    Т.е. много всякой информации.

    Так вот.
    Каким образом лучше сделать так, чтобы можно было через переменные JOIN'ить или просто добавлять таблицы к общему запросу?

    Как-то сумбурно объяснил.

    Пример.

    Код (Text):
    1. $param1  = ', rating_id, rating_count ';
    2. $param2 = ', table_rating ';
    3. $param3 = ' AND id = rating_id ';
    4.  
    5. $q = mysql_query("
    6. SELECT id, name, desc, status ".$param1."
    7. FROM table_articles ".$param2."
    8. WHERE status = 1 ".$param3."
    9. ");
    Собственно, вроде теперь понятно.
    Но такой вариант, не знаю, не правильный на мой взгляд что ли.

    Может есть какая-то более удобная система организации таких запросов?

    P.S. Нужно это для того, чтобы через модули добавлять необходимую информацию к выборке из БД.
    В движке система модулей, которая через спец. фильтры может что угодно куда угодно добавить. Но эти фильтры нужно расставить. Вот и интересует какая-то правильная структура построения таких запросов, чтобы к ним можно было что-то прицепить.
     
  2. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    суммарный рейтинг статьи храни в таблице статьи, и не надо ни чего джойнить лишний раз
     
  3. ALEXU

    ALEXU Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Russia
    ну я образно пример привет. мне постоянно рейтинг там не нужен. он в виде модуля, который по желанию цепляется. но сейчас это реализовано так, что любой модуль делается в цикле, что добавляет кучу запросов дополнительных.
    просто кроме варианта как привел выше в голову ничего не лезет.
     
  4. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    Это вполне правильный вариант - формировать SQL запрос как тебе нужно.
    Нужно джоин - добавляй, в чем проблема :)
     
  5. ALEXU

    ALEXU Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Russia
    Я просто подумал, что может кто-то уже сталкивался с подобными реализациями и подсказал бы что-то. Типа каких-то конструкторов запросов или еще чего-то)
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в таких случаях надо поступать именно как говорит юрий - накручивать одну ячейку.
    т.е. ты можешь сохранять кто где голосовал или какой рейтинг выставил, но плюсовать в ячейку и выводить информацию из нее.
     
  7. ALEXU

    ALEXU Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Russia
    igordata, тут все дело не в рейтинге) Понятно, что проще ячейку сделать и туда только количество ставить.
    Вся суть в том, чтобы можно было удобно добавлять к основному запросу, другие.
    В punbb запрос строится в массиве, а потом собирается уже в методе класса.
    С массивом удобнее будет работать и добавлять по ключам туда нужные значения?

    Код (Text):
    1. array (
    2. 'SELECT' => 'id, name, status',
    3. 'FROM' => 'articles',
    4. 'WHERE' => 'status = 1',
    5. и т д....
    6. )
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это уже кому как