Помогите сделать выборку

Тема в разделе "Базы данных", создана пользователем lamo, 30 июн 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. lamo

    lamo Постоялец

    Регистр.:
    1 июл 2008
    Сообщения:
    51
    Симпатии:
    4
    не могу допетрить...

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

    CREATE TABLE questions
    (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id),
    zag VARCHAR(200),
    txt TEXT,
    subrubr SMALLINT,
    ...
    )


    CREATE TABLE rubr
    (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id),
    name VARCHAR(150)
    )

    CREATE TABLE subrubr
    (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id),
    rubr_id SMALLINT,
    name VARCHAR(150)
    )

    В таблице questions хранится значение id подрубрики (subrubr), сама подрубрика связана с рубрикой полем rubr_id (id рубрики)

    Как при выводе рубрик сформировать запрос на вывод количества объявлений (questions)? Что бы можно было вывести количество около каждой рубрики.

    Я в этом не силен попробовал так:
    $query = "SELECT COUNT(questions.id) FROM rubr,subrubr,questions WHERE questions.subrubr=subrubr.rubr_id AND subrubr.rubr_id=".$razd;

    Но возращается нулевой результат. :(
     
  2. dejavu666

    dejavu666 Создатель

    Регистр.:
    30 мар 2009
    Сообщения:
    10
    Симпатии:
    3
    попробуй
    $query = "SELECT subrubr.name,COUNT(questions.id) FROM subrubr,questions WHERE questions.subrubr=subrubr.id AND subrubr.rubr_id = ".$rubr." GROUP BY questions.subrubr";
     
  3. lamo

    lamo Постоялец

    Регистр.:
    1 июл 2008
    Сообщения:
    51
    Симпатии:
    4
    не, что то не канает то же =(
     
  4. dejavu666

    dejavu666 Создатель

    Регистр.:
    30 мар 2009
    Сообщения:
    10
    Симпатии:
    3
    Значит что-то не так делаешь, покажи ещё код и что ты пытаешься дальше выводить
     
  5. lamo

    lamo Постоялец

    Регистр.:
    1 июл 2008
    Сообщения:
    51
    Симпатии:
    4
    PHP:
    function get_count_from_quest($razd)
     {
         
    // $query = "SELECT COUNT(questions.id) FROM rubr,subrubr,questions WHERE questions.subrubr=subrubr.rubr_id AND subrubr.rubr_id=".$razd;
         
    $query "SELECT COUNT(questions.id) FROM subrubr,questions WHERE questions.subrubr=subrubr.id AND subrubr.rubr_id = ".$rubr." GROUP BY questions.subrubr";
          
    $result_id mysql_query ($query) or print ("<p><b>Ошибка</b> в функции print_razdel</p>");
          
    $row mysql_fetch_row ($result_id);
          return 
    $row[0];
     }
    Должна функция возращать количество объявлений у указанного раздела, таблица с объявлениями содержит только подраздел.
     
  6. AndreyD2

    AndreyD2

    Регистр.:
    21 окт 2008
    Сообщения:
    194
    Симпатии:
    67

    Так групировать нужно по полю, которое в запросе

    $query = "SELECT subrubr.name,COUNT(questions.id) FROM subrubr,questions WHERE questions.subrubr=subrubr.id AND subrubr.rubr_id = ".$rubr." GROUP BY subrubr.name"

    Добавлено через 4 минуты
    Вот если в функции
    Код:
    function get_count_from_quest($razd) 
     { 
          $query = "SELECT subrubr.name,COUNT(questions.id) FROM subrubr,questions WHERE questions.subrubr=subrubr.id AND subrubr.rubr_id = ".$razd." GROUP BY subrubr.name";
          $result_id = mysql_query ($query) or print ("<p><b>Ошибка</b> в функции print_razdel</p>"); 
          $row = mysql_fetch_row ($result_id); 
          return $row[0]; 
     }
     
    lamo нравится это.
  7. dejavu666

    dejavu666 Создатель

    Регистр.:
    30 мар 2009
    Сообщения:
    10
    Симпатии:
    3
    ну чтобы показывало кол-во вопросов в разделе, пробуй
    Код:
    function get_count_from_quest($razd) {
    	  $query = "SELECT COUNT(questions.id) FROM subrubr,questions WHERE questions.subrubr=subrubr.id AND subrubr.rubr_id=".$razd." GROUP BY subrubr.rubr_id";
          $result_id = mysql_query($query) or die("<p><b>Ошибка</b> в функции print_razdel</p>");
          $row = mysql_fetch_row($result_id);
          return $row[0];
    	  } 
    print get_count_from_quest(1);
    Добавлено через 2 минуты
    Ну по сути нужно, да. Но тут работает нормально так )))
     
    lamo нравится это.
  8. lamo

    lamo Постоялец

    Регистр.:
    1 июл 2008
    Сообщения:
    51
    Симпатии:
    4
    Всем спасибо, заработало!
     
  9. Cepega

    Cepega Прохожие

    Как кстати я на шел ответ на свой вопрос! Спасибо!
     
Статус темы:
Закрыта.