нужна помощь по выборке из базы

Тема в разделе "Базы данных", создана пользователем асс, 3 окт 2011.

Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    добрый вечер. Что то не могу собрать базу.

    проблема такая

    база имеет структуру из 3 таблиц

    bilets билет 1 2 3 4 5 итд
    glava глава 1 2 3 4 итд
    var_otv варианты ответов на каждый вопрос
    вопрос 1, вариант ответа 1 2 3 4 5 6, глава 1,
    вопрос 2, вариант ответа 1 2 , глава 1,

    вопрос 1, вариант ответа 1 2 3 4 5 6 8 9, глава 2,

    вопрос 1, вариант ответа 1 2 , глава 3,



    каждая глава может иметь повторяющиеся номера но в разных главах.

    пробовал по разному нифига не выходит.


    Вот дамп базы

    HTML:
    
      CREATE TABLE `bilets` (
      `id` int(20) NOT NULL auto_increment,
      `glava` varchar(255) default NULL,
      `vopros` varchar(255) NOT NULL,
      `var` varchar(255) default NULL,
      `pravilno` varchar(15) NOT NULL,
      PRIMARY KEY  (`id`),
      KEY `var_otv` (`var`)
    ) ENGINE=MyISAM AUTO_INCREMENT=662 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=662 ;
    
    -- Дамп данных таблицы `bilets`
    
    INSERT INTO `bilets` VALUES (0, '1', '*вопрос 1', '1', 'тут правильный ответ');
    INSERT INTO `bilets` VALUES (1, '1', '*вопрос 2', '2', '');
    INSERT INTO `bilets` VALUES (2, '1', '*вопрос 3', '3', '');
    INSERT INTO `bilets` VALUES (3, '1', '*вопрос 4', '4', '');
    INSERT INTO `bilets` VALUES (4, '2', '*вопрос 1', '1', '');
    INSERT INTO `bilets` VALUES (5, '2', '*вопрос 2', '2', '');
    INSERT INTO `bilets` VALUES (6, '2', '*вопрос 3', '3', '');
    INSERT INTO `bilets` VALUES (7, '2', '*вопрос 4', '4', '');
    INSERT INTO `bilets` VALUES (8, '3', '*вопрос 1', '1', '');
    INSERT INTO `bilets` VALUES (9, '3', '*вопрос 2', '2', '');
    INSERT INTO `bilets` VALUES (10, '3', '*вопрос 3', '3', '');
    INSERT INTO `bilets` VALUES (11, '3', '*вопрос 4', '4', '');
    INSERT INTO `bilets` VALUES (12, '4', '*вопрос 1', '1', '');
    INSERT INTO `bilets` VALUES (13, '4', '*вопрос 2', '2', '');
    INSERT INTO `bilets` VALUES (14, '4', '*вопрос 3', '3', '');
    INSERT INTO `bilets` VALUES (15, '4', '*вопрос 4', '4', '');
    
    CREATE TABLE `var_otv` (
      `id` int(100) NOT NULL auto_increment,
      `vopros` varchar(255) NOT NULL,
      `n_otv` varchar(10) NOT NULL,
      `v_otv` varchar(255) default NULL,
      `glava` int(15) NOT NULL,
      PRIMARY KEY  (`id`),
      KEY `id` (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=0 ;
    
    -- Дамп данных таблицы `var_otv`
    INSERT INTO `var_otv` VALUES (1, '1', '1', '*ответ 1  на **вопрос 1', 1);
    INSERT INTO `var_otv` VALUES (2, '1', '2', '*ответ 2  на **вопрос 1', 1);
    INSERT INTO `var_otv` VALUES (3, '1', '3', ' ответ 3  на   вопрос 1', 1);
    INSERT INTO `var_otv` VALUES (4, '2', '1', ' ответ 1  на **вопрос 2', 2);
    INSERT INTO `var_otv` VALUES (5, '2', '2', ' ответ 2  на **вопрос 2', 2);
    INSERT INTO `var_otv` VALUES (6, '2', '3', ' ответ 3  на **вопрос 2', 2);
    INSERT INTO `var_otv` VALUES (7, '2', '4', '*ответ 4  на **вопрос 2', 2);
    INSERT INTO `var_otv` VALUES (8, '3', '1', '*ответ 1  на **вопрос 3', 3);
    INSERT INTO `var_otv` VALUES (9, '3', '2', '*ответ 2  на **вопрос 3', 3);
    INSERT INTO `var_otv` VALUES (10, '3', '3', 'ответ 3  на **вопрос 3', 3);
    INSERT INTO `var_otv` VALUES (11, '3', '4', 'ответ 4  на **вопрос 3', 3);
    
    CREATE TABLE `glava` (
      `id` int(25) NOT NULL default '0',
      `title_glava` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
    
    -- Дамп данных таблицы `glava`
    
    INSERT INTO `glava` VALUES (1, '*Тесты  глава 1');
    INSERT INTO `glava` VALUES (2, 'Тесты  глава 2');
    INSERT INTO `glava` VALUES (3, 'Тесты  глава 3');
    INSERT INTO `glava` VALUES (4, 'Тесты  глава 4');
    INSERT INTO `glava` VALUES (5, 'Тесты  глава 5');
    
    помогите пожалуйста как лучше сделать табдицу.
    Вся сложность в вариантах ответов, их можнт быть от 1 до 10

    Щас нарисую нужные связи
     
  2. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    Вот картинка всех таблиц

    схема связей..

    Но у меня не работает от чего то
     

    Вложения:

    • 03.10.png
      03.10.png
      Размер файла:
      104,9 КБ
      Просмотров:
      12
  3. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    724
    Симпатии:
    314
    Честно говоря не очень понятно, что вы хотите получить на выходе. Напишите четко по шагам, что нужно сделать.
     
  4. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    ну логично было бы первую таблицу(билетов) сделать такую:
    №вопроса|текст вопроса| № билета|№главы|№правильного ответа
    2я таблица(главы:(
    №главы|название главы|описание главы
    3я таблица(ответы)
    №ответа|текст ответа|№вопроса
     
  5. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    dino, Смотрите
    у меня так и сделано
    ну логично было бы первую таблицу(билетов) сделать такую:
    №вопроса |№главы |текст вопроса| № билета|№правильного ответа
    2я таблица(главы:(
    №главы|название главы|описание главы
    3я таблица(ответы)
    №ответа|текст ответа|№вопроса
    проблема в том что ответов может быть один -9.
    Добавлено через 4 минуты
    по шагам, мне надо чтобы каджому билету соотвествовали
    оветы из талицы ответов.
    Не пойцму почему не удается связать, где то накосячил видимо.
    вот Типа такого надо но одним (SELECT om )
    PHP:
    $sql mysql_query("SELECT   bilets.*,glava.*  FROM   bilets, glava WHERE glava.id= bilets.glava and  glava.id='1'   and  bilets.var='1' ");
     if(
    mysql_num_rows($sql) >0) {
     while(
    $r  mysql_fetch_array($sql)) {
      echo  
    ' </b>вопрос <b> '$r["vopros"]   ;
       echo
    '<hr>';   }  }
     
    $sql2 mysql_query("SELECT   *  FROM    var_otv,glava  WHERE  glava.id= var_otv.glava and  glava.id='1'     and vopros='1'    ");
           if(
    mysql_num_rows($sql2) >0) {
     while(
    $r2  mysql_fetch_array($sql2)) {
     
    //echo $vop  ='Вопрос №<b>'.$r2["vopros"] .'</b><br />';
    echo $rvot  =  '</b> Ответ  №<b>     '$r2["v_otv"] .'</b><br />' ;
    }}
     
  6. Forza.Baron

    Forza.Baron

    Регистр.:
    26 янв 2012
    Сообщения:
    175
    Симпатии:
    76
    на таблице вопросов не надо было использовать var, а на табл.ответов glava. Все связывалься бы одним id. На вопросах ид-главы, а на ответах ид-вопросов...