Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выборка из нескольких таблиц сразу
 
 автор: bigmak   (13.06.2009 в 16:33)   письмо автору
270 Кб
 
 

Есть база данных с результатами тестирования школьников. Она имеет в своем составе несколько таблиц. Главная это result. В ней в числовом виде содержатся ответы на вопросы теста. есть связаные с главной таблицы, в которых содержится текст ответа. Необходимо выбрать информацию в текстовом виде, т.е из связаных таблиц. Использую phpmyadmin. сначала думал что это из за индексов создал их но ни капельки не помогло((((есть мысль что индексы созданы неправильные
Запрос тормозит жутко, я новичок поэтому не пойму в чем дело, помогите пожалуйста.

  Ответить  
 
 автор: Rolex   (13.06.2009 в 18:57)   письмо автору
 
   для: bigmak   (13.06.2009 в 16:33)
 

Добрый день.
* Для чего производится запрос из таблицы: для распечатывания информации или для размещения на сайте?
* Действительно, запрос растянувшийся на 3 страницы word'a будет долго обрабатываться.

Вся загвоздка в том, что для меня, например, непонятно с какой целью выполняется такой запрос. Наверное проще в таблицу первым столбцом занести Ф.И.О., а затем все остальные столбцы. И тогда для вывода информации потребуется запрос типа:

SELECT*FROM result ();

И если обработать этот запрос, то он будет иметь следующий вид:
Иванов
1 - 2
2 - 4
3 - 2
... и т.д.
Петров
...и т.д.


Таким образом, массив данных можно вывести на web - страницу или сохранить в файле с последующей печатью.

P.S.: обозначте цели создания приложения.

  Ответить  
 
 автор: BIGMAK   (13.06.2009 в 21:02)   письмо автору
 
   для: Rolex   (13.06.2009 в 18:57)
 

Здравствуйте! спасибо что ответили. Цель приложения организация поиска. Его результаты выводятся на сайт.что касается таблицы result то в ней то и содержится фамилия, имя и числовое представление ответов на вопросы(просто в скриншот я не поместил этого), а нужно ыводить текстовое из связаных таблиц поэтому то запрос и такой громадный, а впрочем я новичок поэтому не очень разбираюсь в специфике, но мне кажется странным когда из базы данных (таблица result содержит 8 записей) эта выборка производится за 30 и более секунд

  Ответить  
 
 автор: Trianon   (13.06.2009 в 21:41)   письмо автору
 
   для: bigmak   (13.06.2009 в 16:33)
 

Вы бы привели чтоли дамп БД , а не обрывки картинок....
Если таблица растянута в горизонталь, как это у Вас выглядит - это является главным источником проблем. Так таблицы не проектируют.

  Ответить  
 
 автор: BIGMAK   (13.06.2009 в 22:02)   письмо автору
 
   для: Trianon   (13.06.2009 в 21:41)
 

)))Я извиняюсь, но что такое дамп и что означает в горизонтали. просто я в базах данных без году неделя))

  Ответить  
 
 автор: BIGMAK   (13.06.2009 в 22:26)   письмо автору
4.8 Кб
 
   для: BIGMAK   (13.06.2009 в 22:02)
 

Прошу прощение за свой дилетантизм. Дамп базы и запрос к вашим услугам. Подскажите, почему же запрос так тормозит (но я конечно еще сильнее торможу)))))

  Ответить  
 
 автор: Rolex   (15.06.2009 в 02:05)   письмо автору
 
   для: BIGMAK   (13.06.2009 в 22:26)
 

Необходимо посмотреть код приложения, а может быть и пересмотреть.

  Ответить  
 
 автор: Trianon   (15.06.2009 в 10:18)   письмо автору
 
   для: BIGMAK   (13.06.2009 в 22:26)
 

 `2.1_math` tinyint(1) default NULL COMMENT 'оценка цифрой,если 0 то нет такого предмета',
  `2.1_phisics` tinyint(1) default NULL,
  `2.1_informat` tinyint(1) default NULL,
  `2.1_him` tinyint(1) default NULL,
  `2.1_bio` tinyint(1) default NULL,
  `2.1_gegrafy` tinyint(1) default NULL,
  `2.1_russian` tinyint(1) default NULL,
  `2.1_liter` tinyint(1) default NULL,
  `2.1_inostr` tinyint(1) default NULL,
  `2.1_history` tinyint(1) default NULL,
  `2.1_obshestvo` tinyint(1) default NULL,
  `2.1_pravo` tinyint(1) default NULL,
  `2.1_cherchenie` tinyint(1) default NULL,
  `2.1_mir kyltyra` tinyint(1) default NULL,
  `2.1_tehnologia` tinyint(1) default NULL,
  `2.1_fizkyltyra` tinyint(1) default NULL,

вот таких фрагментов в структурах таблиц быть не должно:
Получается так, что добавление очередного параметра приводит к росту таблицы в ширину ( а не в высоту) . Это я и назвал растягиванием по горизонтали.

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

  Ответить  
 
 автор: BIGMAK   (15.06.2009 в 18:56)   письмо автору
 
   для: Trianon   (15.06.2009 в 10:18)
 

Если вас не затруднит подскажите как правильнее это организовать

  Ответить  
 
 автор: Trianon   (15.06.2009 в 19:49)   письмо автору
 
   для: BIGMAK   (15.06.2009 в 18:56)
 

например так.
таблица пользователей users(id, login, name, regdate....) 

таблица тестов tests(id, name, description, creationdate)

таблица вопросов тестов qtns(id, test_id, qtn_text, mode(num, text, enum, set))

таблица вариантов ответов на вопрос vars(id, var_text, qtn_id) 
// qtn_id задается при однозначной принадлежности. 

таблица соответствия вариантов ответов вопросам qtn_var(id_qtn, id_var, seq) 
// строки описывают  множественную принадлежность вариантов ответов вопросам

таблица прохождения тестов exam(user_id, test_id, exam_date, elapsed_time)

таблица ответов answer(exam_id, qtn_id, var_id, extra) 
// последнее поле при произвольном ответе 

  Ответить  
 
 автор: BIGMAK   (15.06.2009 в 20:14)   письмо автору
 
   для: Trianon   (15.06.2009 в 19:49)
 

Большое спасибо.Очень помогли

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования