Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
20 / 20 / 12
Регистрация: 27.04.2012
Сообщений: 145

Один запрос или несколько

08.06.2015, 02:34. Показов 1149. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток. Тут опять из-за недостатка опыта вопрос.

Делаю сложный запрос на несколько таблиц. Из одной, главной таблицы, мне нужна всего одна строка. Из других - несколько. То есть, у меня есть БД библиотеки, и мне надо вытащить оттуда сведения о, собственно, книге. Книга одна, а авторов и жанров у нее может быть много.

Естественно, в результате выполнения запроса мне в каждой строке выдает в кучу дублирующейся инфы. НУ и собственно вопрос. С точки зрения оптимизации лучше сделать несколько маленьких запросов, либо такой один большой, а потом уже его в пхп разбирать?

Проще второй вариант, но лучше, полагаю, первый. Хотелось бы услышать опытных людей.

Вот сам запрос и результат:
SQL
1
2
3
4
5
6
7
8
9
SELECT books.name_book, books.description_book, books.year_book, books.country_book, books.trans_book, books.series_number, 
authors.fio_author, authors.id_author,
series.id_series, series.name_series,
genres_books.genre_book
FROM books, authors, authors_books, genres_books, series
WHERE books.id_book =  '9' 
AND authors_books.id_book = books.id_book AND authors_books.id_author = authors.id_author 
AND genres_books.id_book = books.id_book
AND series.id_series = books.series_number
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2015, 02:34
Ответы с готовыми решениями:

Что лучше? Несколько условии или один цикл с массивом?
Всем привет! На сайте есть скрипт с несколькими условиями(довольно таки много условии). И ответ я получаю через 800-850 мс. Как быть,...

Несколько значений за один запрос
Всем доброго времени суток. У меня такая ситуация... Есть пополняемая таблица вида: User | Type | Link | что-то еще... ...

Запрос данных из БД. Один большой запрос или много маленьких?
Есть основная форма, на которой расположен TreeView, содержащий щас 30 ветвей. По щелчке на ветке открываются дочерние формы, на каждой в...

12
Заблокирован
08.06.2015, 02:53
Просто замерь время для одного большого запроса и для трёх мелких. И сам всё поймёшь.
0
20 / 20 / 12
Регистрация: 27.04.2012
Сообщений: 145
08.06.2015, 03:07  [ТС]
Trukl, тут же дело не только, во времени выполнения запроса в базе, но еще в том, что в пхп приходит гора лишних данных. Ну и такое.
0
Заблокирован
08.06.2015, 03:19
Что значит лишних? Не запрашивай лишние и не будут приходить.
0
20 / 20 / 12
Регистрация: 27.04.2012
Сообщений: 145
08.06.2015, 03:28  [ТС]
Trukl, посмотрите скриншот. В каждой строке дублируются данные из таблицы, откуда нужна только одна запись. Отличаются строки только одним значением.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
08.06.2015, 03:34
ljubomir, А ГДЕ join,Ы ???

Добавлено через 3 минуты
ljubomir, лучше разбей на несколько запросов
0
20 / 20 / 12
Регистрация: 27.04.2012
Сообщений: 145
08.06.2015, 03:41  [ТС]
Dethmontt, мм, не вполне понимаю, как джойны мне могут помочь избежать дублирования...

Добавлено через 1 минуту
Dethmontt, ок, спасибо. несколько запросов меньше нагрузки должны дать?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
08.06.2015, 03:43
на SQL больше, меньше на передачу результата
0
Заблокирован
08.06.2015, 03:43
Цитата Сообщение от ljubomir Посмотреть сообщение
В каждой строке дублируются данные из таблицы, откуда нужна только одна запись. Отличаются строки только одним значением.
Я не понимаю смысла вопроса. Если нужны данные из одного столбца то запрашивай только их. Если данные дублируются абсолютно во всей таблице , а не только в участке на скриншоте. То вопрос номер два. Чей гениальный ум вообще создал столь идиотскую таблицу?
0
20 / 20 / 12
Регистрация: 27.04.2012
Сообщений: 145
08.06.2015, 03:52  [ТС]
Trukl, боже, как все сложно. Понятно ведь объяснил. Нужно вытащить ВСЕ данные о книге. часть из них хранится в одной таблице, другая часть - в других таблицах, так как у книги, в частности, может быть несколько авторов. Нужно вытащить ОДНУ запись из одной таблицы, а также НЕСКОЛЬКО из другой. На скриншоте прекрасно видно, что бд выдает результат из нескольких строк, в которых данные из таблицы, откуда нужна только одна запись, повторяются, но различаются данные из других таблиц.

Добавлено через 41 секунду
Dethmontt, благодарю. Несколько запросов, наверное, будет лучше.
0
Заблокирован
08.06.2015, 04:04
Цитата Сообщение от ljubomir Посмотреть сообщение
Понятно ведь объяснил
Я бы так не сказал. В данный момент только ты в теме вопроса. Так как никто кроме тебя не видит структуры твоей БД. А ты судя по всему просто не можешь правильно составить запрос, так как судя по высказыванию
Цитата Сообщение от ljubomir Посмотреть сообщение
Нужно вытащить ВСЕ данные
ты подразумеваешь выставленный тобою запрос. Я же говорю не выбирай то что тебе не надо. Чтобы не получалось таких дублей.
0
20 / 20 / 12
Регистрация: 27.04.2012
Сообщений: 145
08.06.2015, 04:10  [ТС]
Trukl, Вот структура бд.
0
20 / 20 / 12
Регистрация: 27.04.2012
Сообщений: 145
08.06.2015, 04:11  [ТС]
Trukl, я и так выбираю лишь то, что нужно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2015, 04:11
Помогаю со студенческими работами здесь

Один sql запрос и несколько таблиц
Добрый вечер, подскажите как одним sql запросом внести данные в несколько таблиц сразу. Пишу begin Sozd_Query.Close; ...

Запрос в цикле или один длинный запрос?
Подскажите, пожалуйста, как лучше поступить? Есть магазин с 20 тыс товаров. Нужно обновить их по некоторым условиям. И вот вопрос, что...

Как объединить несколько INSERT в один запрос
Я с MySQL недавно... поэтому вопрос чайника. Как объединить несколько команд INSERT или REPLACE в один запрос? Допустим в...

Несколько записей из одной таблицы в один запрос
Добрый день вот у меня есть 2 таблицы Users - user_id - name - pass - ... - 1 - u1 - 1111 - .... - 2 - u2 ...

Один или несколько?
Ситуация такая: есть годовалый корпоративный сайт ~200 страничек со статьями (частично копирайт) и каталог. PR2, ТИЦ 70, ДМОЗ. 12 беков...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru