|
8 / 8 / 3
Регистрация: 06.12.2013
Сообщений: 200
|
|
Можно ли во время цикла WHILE делать новые запросы к MySQL?21.04.2014, 16:04. Показов 2987. Ответов 15
Метки нет (Все метки)
Добрый день!
Вопрос, наверное, простой для тех, кто разбирается в MySQL... Делаю следующее: 1. Подключаюсь к БД 2. Делаю запрос к БД 3. Получаю результат и обрабатываю его в цикле WHILE. Здесь все понятно. Вопрос вот в чем. Можно ли во время этого цикла делать дополнительные запросы к БД с другими параметрами? Или пока не завершится цикл или я принудительно его не завершу, то не смогу сделать новый запрос к БД и обработать его вложенным циклом? В общем можно ли обращаться к БД во время обработки циклом первого запроса? Заранее спасибо!
0
|
|
| 21.04.2014, 16:04 | |
|
Ответы с готовыми решениями:
15
MySQL + Delphi 7 делать запросы на удалённый компьютер После цикла вывода информации, не получается использовать другие запросы к MySQL Можно ли сделать так, чтобы во время цикла можно было вводить какую нибудь символ? |
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||
| 21.04.2014, 16:22 | ||
|
0
|
||
|
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
|
|
| 21.04.2014, 16:38 | |
|
Можно, но не нужно.
Опиши ситуацию, подскажем поди
0
|
|
|
8 / 8 / 3
Регистрация: 06.12.2013
Сообщений: 200
|
|
| 21.04.2014, 17:31 [ТС] | |
|
Это непросто, но я попробую. В общем я реализую раздел "ФОТО" для пользователей, как в обычных соц. сетях. Можно создавать альбомы и помещать в них фотографии. Все это у меня реализуется в одной таблице БД. Имеются следующие столбцы: ID, album_code, album_name, photo. Это конечно не все, но для примера достаточно. В строках (полях) хранятся не только сами фотографии (т.е. названия файлов), но и картинки самих альбомов (своего рода пиктограмма, на которую нажимаешь и попадаешь в альбом).
Все фотографии и альбом в котором они лежат имеют общий код, который ставится в столбце album_code, а название альбома только в графе album_name. И так, когда я делаю запрос к БД на предмет названий альбомов, чтобы их отобразить, то получаю их названия и их кол-во и отображаю на странице пиктограммы с альбомами. На самих пиктограммах у меня отображаются названия альбомов, а еще мне нужно чтобы отображалось кол-во фотографий в каждом альбоме. Когда я в цикле WHILE прогоняю альбомы, мне хочется делать дополнительный запрос к БД в цикле, чтобы БД подсчитывала кол-во записей с таким же album_code, как и сам альбом и выводила рядом с названием альбома еще и кол-во фотографий. Честно говоря я пытался делать такие запросы, но они просто не работают, поэтому я решил что пока цикл не прогонишь, то наверное нельзя сделать новый запрос к БД. Может у кого есть еще какие-то мысли как все это сделать лучше....
0
|
|
|
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
|
|
| 21.04.2014, 18:54 | |
|
во первых, нужно отделить мух от котлет, альбомы одна таблица, фотки другая
album (поля)- id, name, icon, count и т.д. count- количество фото foto (поля) - id, album_id, patch и т.д. при загрузке фото обновляете поле count с таблице album дальше думаю понятно
0
|
|
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|||||||
| 22.04.2014, 07:47 | |||||||
. Но в любом случае это не рационально. Лучше фото считать в запросе, что-то вроде такого:
0
|
|||||||
|
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
|
|
| 22.04.2014, 12:29 | |
|
0
|
|
|
8 / 8 / 3
Регистрация: 06.12.2013
Сообщений: 200
|
|
| 22.04.2014, 13:42 [ТС] | |
|
Честно говоря я вчера решил эту проблему следующим образом... Когда я загружаю очередной файл на сервер, я записываю его имя в поле photo и после этого делаю запрос к БД и подсчитываю количество таких файлов, где поле album_code одинаковое для рассматриваемого альбома. После чего заношу это число в свободное поле напротив названия альбома (у меня на самом деле больше полей, чем я написал. Есть поля для хранения ширины и высоты иконки и для ширины и высоты полноценного изображения, дата и т.д.) Таким образом в БД у меня сразу хранится нужное число и каждый раз его высчитывать нет смысла. Оно легко обновляется при загрузке очередного файла. И я могу хоть тысячу раз обращаться к своей галлерее и не нужно напрягать сервер, чтобы каждый раз обсчитывать все альбомы, просто беру нужное число во время обхода ы цикле альбомов.
Скажите, а чем лучше все хранить в двух таблицах. Я честно говоря еще не научился работать с несколькими таблицами. Это чем-то эффективнее?
0
|
|
|
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
|
|
| 22.04.2014, 19:20 | |
|
0
|
|
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||
| 24.04.2014, 09:07 | ||
|
0
|
||
|
112 / 93 / 15
Регистрация: 03.10.2012
Сообщений: 315
|
|||||||
| 24.04.2014, 09:11 | |||||||
0
|
|||||||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||
| 24.04.2014, 11:38 | ||
Но видите, если убрать второй запрос, то можно и не заметить, что его там нет. Т.е. он не несёт очень важной нагрузки. А если сделать как я показал - то там сразу видно будет что что-то не так. В общем понятно . Да и если ничего не забыть - то это просто неправильно, так делать. Представьте, если приложение разрастётся и фото будут обрабатываться в разных частях - в каждой из этих частей придётся дописывать запрос (хотя и можно сделать одно место обработки фото). А если сделать как я показал - то добавлять фото можно будет не заботясь о счётчике.В общем - дело Ваше .
0
|
||
|
112 / 93 / 15
Регистрация: 03.10.2012
Сообщений: 315
|
||
| 24.04.2014, 15:36 | ||
|
0
|
||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|
| 24.04.2014, 17:31 | |
|
Я и говорю про это
. В общем - делайте как хотите. Но я бы не делал так, чтобы "родительская" таблица "знала" о своих "потомках" (путь даже всего-лишь о их количестве).
0
|
|
|
8 / 8 / 3
Регистрация: 06.12.2013
Сообщений: 200
|
|
| 24.04.2014, 22:17 [ТС] | |
|
Коль уж эта тема кого-то заинтересовала, опишу подробнее свою таблицу. В ней следующие поля:
1) id (думаю комментировать не надо) 2) album - здесь хранятся названия альбомов, если строка принадлежит именно пиктограмме альбома 3) code - здесь хранится индивидуально генерируемый код, который указывает на родство картинок и конкретного альбома (у них один и тот же код) 4) thumb_code -здесь хранится по сути имя файла уменьш. картинки для предварительного просмотра, но без расширения, чтобы не забивать БД лишней информацией, расширения потом добавляются. 5) thumb_width 6) thumb_height (5 и 6 думаю тоже в комментариях не нуждаются) 7) photo_code - здесь хранится имя оригинального большого файла тоже без расширения 8) photo_width 9) photo_height (8 и 9 так же в комментариях не нуждаются) 10) date - здесь храним дату, чтобы сортировать все по дате (как альбомы, так и картинки) Комментарии: в поле photo_code так же записываю количество фоток в альбоме, т.к. в строке альбома это поле пусто. Добавлено через 5 минут 1. INSERT INTO photos VALUES(0, '<album_id>', '<filename>'); /* вставили фотку */ 2. UPDATE albums SET `count` = `count` + 1 WHERE id = '<album_id>'; /* увеличили счетчик */ А вот вторая строка мне вот чем не нравится. Может произойти какой-нибудь сбой. Тогда первая строка отработает, а вторая не прибавит единицу, или наоборот первая не добавит новую фотку, а вторая добавит единицу. Они работаю независимо друг от друга. Мне кажется лучше каждый раз делать запрос к базе и заново обсчитывать количество одинаковых кодов. Это не такой уж напряг для сервера, зато не зависит от сбоев. Даже если первый раз произойдет ошибка, то при повторном внесении записи ошибка исправится.
0
|
|
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||
| 25.04.2014, 08:53 | ||
. Обычно записи в БД связывают по ID. Т.е. в таблице, например, "albums" есть поле "id", в таблице "photos" есть поле "album_id". Так вот, в поле "album_id" пишется значение из поля "id" таблицы "albums" и таким образом происходит связка.P.S. Либо я не так понял, зачем у Вас поле "code".
0
|
||
| 25.04.2014, 08:53 | |
|
Помогаю со студенческими работами здесь
16
Можно ли объединить следующие запросы или делать внутреннюю процедуру Запросы на PHP к БД или локальному файлу, желательно Firebird (можно MySQL) Как можно прервать выполнение цикла на определенное время? Можно ли задержать выполнение цикла на время с использованием таймера?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|