Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

Открыть новую тему     Написать ответ в эту тему

andyzubov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
через insert быстро не будет, для быстрой заливки данных у большинства sql серверов есть отдельные возможности

Всего записей: 493 | Зарегистр. 02-04-2015 | Отправлено: 23:41 18-03-2020
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andyzubov
Ну путь не insert, а как-то по-другому. Главное создать n-ное количество записей порой строк запроса. 10 записей ещё не беда, а вдруг 10000 и получится мноооого букв. А вот как-бы проще сделать...

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 00:19 19-03-2020
andyzubov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
посмотрите в доке вашего сервера что-нибудь про массовую загрузку и bulk operations
универсального решения нет, у каждого sql сервера свои средства подобной загрузки

Всего записей: 493 | Зарегистр. 02-04-2015 | Отправлено: 00:52 19-03-2020
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andyzubov
Я-же написал что

Цитата:
Запрос для одного Delphi компонента

В доке только написано что поддерживает SQL'92. Почитал чуток что можно дописать GO или REPEAT, но не работает там. Вот и просил хотя-бы один-два примера из возможных запросов.

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 07:58 19-03-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleksandr N

Цитата:
Почитал чуток что можно дописать GO или REPEAT,

все зависит от используемого сервера.

Цитата:
что поддерживает SQL'92

компонент, может быть, и поддерживает, а вот поддерживает ли сервер.
какой используется?

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 08:06 19-03-2020
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
В том-то и дело что сервера нет. Этот компонент работает с собственными базами данных собственного формата где поддерживаются SQL запросы. В частности при помощи запроса что я показал можно создать таблицу базы данных в памяти машины. Чтобы понимать о чём я говорю, вот оно: http://www.componentace.com/bde_replacement_database_delphi_absolute_database.htm
http://www.componentace.com/sql/alter-table-memory.htm

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 08:32 19-03-2020
andyzubov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это какая-то самописная экзотика, сделай проще, спроси у техподдержки

Всего записей: 493 | Зарегистр. 02-04-2015 | Отправлено: 09:21 19-03-2020
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andyzubov
Ну да. Но как-бы должно поддерживать SQL'92. Можно конечно и у поддержки спросить, только эту штуку нужно сначала купить, а это не наш метод. Дело-ж не в том что самописная или нет, а дело в самом запросе.

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 09:24 19-03-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleksandr N

Цитата:
SQL Support
SELECT with DISTINCT, INNER LEFT, RIGHT, FULL and OUTER JOIN, GROUP BY and ORDER BY clauses
CREATE TABLE, DROP TABLE, ALTER TABLE statements
CREATE INDEX, DROP INDEX statements
INSERT, UPDATE, DELETE statements
BETWEEN, IN, LIKE, IS NULL, EXISTS operators
Aggregate functions COUNT,SUM,MIN,MAX,AVG
Most of all SQL'92 arithmetic, logical, date-time and string functions and operators
Data types conversion by function CAST
SQL scripts (multiple statements separated by ';')
Parameters in queries
SELECT from several databases in one query
Correlated and non-correlated subqueries

тут ни слова о том, что можно что то делать из того, что вам хочется.
ничего о каких либо процедурных возможностях.
 
но и зачем это? ведь тут движок базы встроен в сам .exe, не все ли равно какой длины SQL запрос?

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 09:31 19-03-2020 | Исправлено: Mavrikii, 09:32 19-03-2020
andyzubov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вы путаете, insert никакого отношения к быстрой загрузке не имеет, это просто обычный sql поддерживаемый всеми sql серверами и частью локальных бд как у вас.
просто у многих баз есть возможность загрузки данных не через insert, а через другие интерфейсы, у того же sql server есть bulk load.  
если нет, то самое быстрое что вы можете придумать это грузить свои 100 записей не через 100 отдельных инсертов, а через один (скриптом), опять же если синтаксис поддерживает.

Всего записей: 493 | Зарегистр. 02-04-2015 | Отправлено: 09:59 19-03-2020
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
не все ли равно какой длины SQL запрос

Ну если простого решения быстро не находится то наверное так и оставлю. И там не в экзешние встроено, там можно делать что угодно программным кодом, в том числе и вставить запрос.
andyzubov
Вот я и хотел не 100 инзертов, а одну строку.
Но наверное стоит отменить свой вопрос. Не критично, просто было любопытно.

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 10:56 19-03-2020
vabik

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день форумчане,  подскажите кто силен в запросах.
 
Из дубликатов вывести MIN и MAX  значения.
 
Вывод дублей : select   * from Table_1
   GROUP BY col1
   having count(*) > 1;
 

Всего записей: 70 | Зарегистр. 28-12-2005 | Отправлено: 09:50 11-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vabik
select min(t.col1), max(t.col1) from (select col1 from table1 group by col1 having count(*) > 1) t  
если количество совпадений, то  
select min(t.cnt), max(t.cnt) from (select count(*) cnt from table1 group by col1 having cnt > 1) t  

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 09:55 11-04-2020 | Исправлено: Mavrikii, 10:05 11-04-2020
vabik

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Оперативно, спасибо Вам.

Всего записей: 70 | Зарегистр. 28-12-2005 | Отправлено: 10:05 11-04-2020 | Исправлено: vabik, 10:07 11-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vabik

Цитата:
в конце запроса t  

алиас результатов запроса в скобках. AS писать необязательно (не знаю как во всех СУБД)

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 10:08 11-04-2020
vovalm

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извиняюсь если не в правильную тему написал, но другой получше не нашел.
Запрос смогу сам составить, но интересует вопрос как лучше поступить (в плане производительности и правильного тона).
Задача следущая:
Есть 1 таблица з заказами, и есть 2 таблица с товарами в каждом заказе. во второй таблице нужно считать прогрес изготовления заказа по каждой позиции и так формировать статус заказа (сделано, в работе и тп).
Пока в голову пришло:
1. формировать статус математически, без наличия самого поля статуса (напр. суму всех позиций (в кг) минус суму изготовленой позиции.
2. сделать отдельное поле статуса в первой таблице и при update во второй пересматривать поле статуса первой
3. сделать тоже что и 2, только тригерами.
 
какой с вариантов найоптимальней будет? заранее спасибо.
 
P.S. записей пока немного в базе и в принципе большого роста не планируеться, но хочеться сделать "на века")
P.P.S речь об MySql

Всего записей: 58 | Зарегистр. 11-07-2009 | Отправлено: 16:21 07-11-2020 | Исправлено: vovalm, 16:22 07-11-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovalm

Цитата:
какой с вариантов найоптимальней будет?

для начала определиться что каждый статус означает.
ибо если привязка к "кг", то это явно не универсальное.
обычно поле статуса у заказа, и оно обновляется по мере выполнения каких то действий при обработке заказа.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 01:51 08-11-2020
Mic777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
какой с вариантов найоптимальней будет?

А что с историей прогресса?
Надо ли видеть в какой день какой прогресс был или достаточно самого факта?
 
Проще - 1.
 
2 или 3 - с прицелом если на большой объем в будущем.
Если логики при update не много то достаточно и этого, если будет что-то закрученное, то возможно придется переехать на триггеры.
 
а "на века" - ой ли

Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 15:04 26-11-2020
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите с SQL, пожалуйста.
 
Есть sqlite-файл с тремя таблицами. Нужно создать новый sqlite-файл с одной таблицей, записи в которой должны дублировать записи одной из таблиц первого файла.
Причем во втором файле к таблице нужно добавить новый индекс.
 
Как это сделать пакетно?

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 15:58 10-12-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare

Цитата:
записи в которой должны дублировать записи одной из таблиц первого файла

репликация всех изменений?
или просто копирование того, что сейчас есть в файле?
копируете sqlite файл, открываете в любом sqlite редакторе, добавляете индекс.
SQLiteStudio
 
если с репликацией, то это сложнее и не относится к чисто "sql запросу", так как нет сервера БД.
и тогда нужно что то типа https://github.com/rqlite/rqlite
 
или отдельный скрипт/программа работающая с обоими файлами при изменении первого.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 20:30 10-12-2020 | Исправлено: Mavrikii, 21:12 10-12-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru