Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
Уважаемые, надеюсь, друзья) Первый раз на Вашем Форуме и мой первый вопрос (я только начал изучат MySQL и, скорее всего, делаю глупости, но разобраться самостоятельно не могу(( ). Итак, написал я такой запрос: мой второй в жизни запросавтор/*УДАЛЯЕМ СТАРУЮ БАЗУ, ЕСЛИ ОНА БЫЛА*/ DROP DATABASE IF EXISTS `my_second_database`; /*СОЗДАЁМ БАЗУ, ПРОВЕРЯЯ НЕТ ЛИ ТАКОГО НАЗВАНИЯ*/ CREATE DATABASE IF NOT EXISTS `my_second_database` /*!40100 COLLATE 'cp1251_general_ci' */; /*ОПРЕДЕЛЯЕМ КАКУЮ БАЗУ ИСПОЛЬЗОВАТЬ*/ USE `my_second_database`; DROP TABLE IF EXISTS `contracts`; CREATE TABLE IF NOT EXISTS `contracts` ( `ID` int NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), `NumberOfTheContract` varchar(10) NOT NULL , `AccountID` int NOT NULL DEFAULT '4', `ListOfUsers` varchar(200) NOT NULL ); DROP TABLE IF EXISTS `accounts`; CREATE TABLE IF NOT EXISTS `accounts` ( `ID` int NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), `AccountNumber` int NOT NULL , `AccountBalance` decimal(13, 2) NOT NULL DEFAULT '0', `AccountStatus` int(1) NOT NULL DEFAULT '1'); DROP TABLE IF EXISTS `users`; CREATE TABLE IF NOT EXISTS `users` ( `ID` int NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), `UserFullName` varchar(200) NOT NULL , `UserAddress` varchar(1000) NULL , `EquipmentId` int NULL ); DROP TABLE IF EXISTS `equipment`; CREATE TABLE IF NOT EXISTS `equipment` ( `ID` int NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), `EquipmentNumber` varchar(200) NOT NULL ); START TRANSACTION /*ЗАМОРАЖИВАЕМ БАЗУ ДЛЯ ДОБАВЛЕНИЯ ДАННЫХ*/; INSERT INTO `contracts` (`NumberOfTheContract`, `AccountID`, `ListOfUsers`) VALUES ('СД-153\2015','4','1, 3, 5, 6, 7, 9'), ('СД-226\2015','2','3, 5, 6'), ('СД-67\2018','2','5, 8, 9'), ('СД-267\2017','1','1, 2, 5, 7, 8'), ('СД-202\2016','2','1, 3, 4, 7'), ('СД-60\2015','3','1, 3, 4, 8'), ('СД-265\2015','1','2, 3, 5, 7, 8, 9'), ('СД-60\2016','5','3, 4, 6, 7'); INSERT INTO `accounts` (`AccountNumber`, `AccountBalance`, `AccountStatus`) VALUES ('6',21.73,'1'), ('14',44.67,1), ('40',58.73,1), ('56',56.54,0), ('39',70.76,0), ('44',33.95,1), ('47',80.66,0), ('88',36.64,1); INSERT INTO `users` (`UserFullName`, `UserAddress`, `EquipmentId`) VALUES ('Шинский Прокофий Артемиевич ','614000, Пермь, улица Решетникова, дом 4, оф. 306',null), ('Олейников Виктор Титович ','614000, Пермь, улица КИМ, 75, офис 201',7), ('Порошина Ираида Игнатиевна ','614000, Пермь, улица Чехова, дом 26',2), ('Сайтахметова Нона Тихоновна ','614000, Пермь, улица Чкалова, дом 7, корпус 3',null), ('Воеводина Альбина Несторовна ','614000, Пермь, улица Мира, 64',5), ('Трактирников Платон Фролович ','614000, Пермь, улица Крылова, 4',8), ('Эмин Евстигней Кириллович ','614000, Пермь, улица Максима Горького, 83, оф. 404',7), ('Алистратова Эмма Геннадиевна ','614000, Пермь, улица Полины Осипенко, 51 а, Медцентр ""Диамед""',null), ('Косыгин Елизар Сократович','614000, Пермь, улица Полины Осипенко, 51 а, Медцентр ""Диамед""',1); INSERT INTO `equipment` (`EquipmentNumber`) VALUES ('GQEF-5586'), ('DHDX-8353'), ('BOYJ-0715'), ('KMOM-2153'), ('DJMK-9599'), ('XBVM-9817'), ('FUFO-2526'), ('BQOY-2640'); COMMIT; /*РАЗМОРАЖИВАЕМ БАЗУ ПОСЛЕ ДОБАВЛЕНИЯ ДАННЫХ*/; DROP TABLE IF EXISTS `contracts_new`; CREATE TABLE IF NOT EXISTS `contracts_new` ( `ID` int NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), `NumberOfTheContract` varchar(10) NOT NULL , `AccountID` int NOT NULL DEFAULT '4', `User` VARCHAR(12) NOT NULL ); DROP FUNCTION IF EXISTS `SPLIT_STRING`; /*ФУНКЦИЯ ДЕЛЕНИЯ СТРОКИ ПО ОПРЕДЕЛЕННОМУ СИМВОЛУ*/ CREATE FUNCTION `SPLIT_STRING` ( str VARCHAR(2000), delim VARCHAR(12), pos INT ) RETURNS varchar(255) CHARSET utf8 COMMENT 'Разделение строки по делимитеру' RETURN REPLACE( SUBSTRING( SUBSTRING_INDEX(str, delim, pos), CHAR_LENGTH( SUBSTRING_INDEX(str, delim, pos - 1) ) + 1 ), delim, '' ); DROP PROCEDURE IF EXISTS `BadTableToGoodTable`; DROP PROCEDURE IF EXISTS BadTableToGoodTable; delimiter // CREATE PROCEDURE `BadTableToGoodTable`() BEGIN DECLARE i_FIRST INTeger; DECLARE i_USERS INTeger; DECLARE j_FIRST INTeger; DECLARE j_ROWS INTeger; SET j_FIRST=LEAST (1,(SELECT MIN(`ID`) AS Min_j_FIRST FROM `Contracts`)); SET j_ROWS = GREATEST ((SELECT COUNT(*) FROM `Contracts`), (SELECT MAX(`ID`) AS Max_j_FIRST FROM `Contracts`)); REPEAT SET i_FIRST = 1; SET i_USERS=(Select LENGTH(`ListOfUsers`) FROM `Contracts` WHERE `ID`=j_FIRST); SET i_USERS=(i_USERS-1)/3+1; REPEAT INSERT INTO `contracts_new` (`NumberOfTheContract`, `AccountID`, `User`) SELECT `NumberOfTheContract`,`AccountID`, `SPLIT_STRING`(`ListOfUsers`, ', ', i_FIRST ) FROM `Contracts` WHERE (`SPLIT_STRING`(`ListOfUsers`, ', ', i_FIRST ) IS NOT NULL) and (`ID`=j_FIRST); SET i_FIRST = i_FIRST + 1; UNTIL i_FIRST=i_USERS+1 END REPEAT; SET j_FIRST = j_FIRST + 1; UNTIL j_FIRST=j_ROWS+1 END REPEAT; END// delimiter ; CALL BadTableToGoodTable(); SELECT contr.NumberOfTheContract, usr.UserFullName, acc.AccountNumber, acc.AccountBalance, acc.AccountStatus FROM `contracts_new` AS contr, `users` AS usr, `accounts` AS acc WHERE (contr.User=usr.ID AND contr.AccountID=acc.ID); SELECT contr.NumberOfTheContract, usr.UserFullName, eq.EquipmentNumber, acc.AccountStatus FROM `contracts_new` AS contr, `users` AS usr, `equipment` AS eq, `accounts` AS acc WHERE (contr.User=usr.ID AND contr.AccountID=acc.ID and usr.EquipmentId =eq.ID and usr.EquipmentId IS NOT NULL); К слову... выполнял всё в соответствии с заданием одного товарища: Задание, по которому всё выполнялосьДомашка №2 (психоделический трип) { 1. создать три таблицы c полями: таблица1(договор): айди, номер договора, айди счета, список айди пользователей; таблица2(счет): айди, номер счета, баланс счета, статус счета; таблица3(пользователи): фио, адрес; добавить пользователей, счета, договора, связать договор с тремя пользователями и одним счетом 2. вывести запросом такую табличку: -номер договора -фио пользователя -номер счета -баланс счета -статус счета 3. создать табличку4(оборудование): айди, номер формат номера: A..Z[4]-1..9[4], пример: AAAA-1234 добавить в табличку пользователей "айди оборудования" заполнить таблицу оборудования строками; добавить некоторым пользователям ссылку на одно оборудование; 4. вывести запросом -номер договора -фио пользователя -номер оборудования пользователя -статус счета } Писал я всё с использованием двух приложений: HeidiSQL Версия 9.5.0.5259 (64 Bit) Дата сборки: 2018-03-04 11:22:04 Navicat Premium Version 11.2.14 (64-bit)- Версия MySQL 5.7.21-log В общем-то, вроде, всё понятно, после разбора (функцию украл, процедуру переписал, остальное - сам). Однако, система (в HeidiSQL) пишет какие-то предупреждения. И не знаю, где их посмотреть, на что оно ругается, а самое главное - что не так? А Navicat вообще отказался экспортировать запрос. НО! Он выполняется! Помогите, пожалуйста, разобраться, что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 21:17 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
rick1177что я делаю не так?1) Используете нештатные клиенты (HeidiSQL, Navicat Premium); 2) Используете чужой код, не понимая до конца его сути ("функцию украл"); 3) Не читаете сообщений сервера ("пишет какие-то предупреждения"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 21:54 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
Akina, есть конкретные предложения? 1) Что предлагаете использовать? 2) Не согласен - функции разобрал - всё понял. 3) Не могу сообразить, где их прочитать в этих программах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 22:06 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
1) При изучении - только штатную консоль. Всё остальное может быть только вспомогательным инструментом. 2) Ну так уж было сформулировано... 3) См. п. 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 22:31 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
Akina, я надеюсь такой софт пойдёт? MySQL Workbench 6.3 Verson 6.3.10 build 12092614 CE (64 bits) Community Штатная штука, установилась вместе с MySQL. Или Вы предлагаете как-то иначе писать запросы? В результате выполнения кода в этом софте были отмечены следующие проблемы (прилагаю файл). Все проблемы всегда возникаю с командами: DROP TABLE IF EXISTS CREATE TABLE IF NOT EXISTS DROP TABLE IF EXISTS DROP FUNCTION IF EXISTS ROP PROCEDURE IF EXISTS Но всё создаётся и всё вроде как ОК... воть... Что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 22:50 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
Забыл файл прикрепить (на этом форуме нельзя изменить опубликованное сообщение? - странно)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 22:56 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
rick1177Все проблемы всегда возникаю с командами:Вы имеете в виду warning(s) в приведенном логе? Это далеко не всегда проблема. Если будет error(s) - это проблема. Например, если уберете IF EXISTS при удалении несуществующей таблицы. Другие проблемы есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 23:29 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
vkle, собственно? других проблем нет, кроме той, что Navicat не хочет экспортировать aql запрос. Workbench сделал это.... но причина проблем не ясна(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 23:34 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
rick1177Navicat не хочетПочему бы не задать вопрос техподдержке Navicat, если с ним такие проблемы? Тем более, чтоrick1177Workbench сделал этоМожно его использовать, если с ним нет проблем. Хотя, как выше уже сказали, штатной консоли вполне достаточно для изучения. Чтобы не печатать руками и не копипастить портянки кода, там есть волшебная команда source (она же "\."), которой можно выполнить запросы из текстового файла. Не помешает текстовый редактор, вроде блокнота, для создания/правки файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 23:54 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
Друзья, Вы все говорите про штатную консоль ... но что это, где это? Я ведь только начал) Где прочитать? Спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2018, 23:59 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
Консоль запускается командой mysql (или mysql.exe для винды) из оболочки или из командной строки виндовз. Например, так: Код: sql 1. Подробные инструкции смотрите в документации https://dev.mysql.com/doc/refman/5.7/en/invoking-programs.html - там несколько страниц с довольно полным описанием на все случаи жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 00:23 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
Простите за тупизм.... Запустил командную строку cmd, написал MySQL и получил "MySQL не является внутренней или внешней командой, исполняемой программой или пакетным фалом". Что делать дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 01:12 |
|
||
|
Помощь новичку (предупреждения при выплднении MySQL запроса)
|
|||
|---|---|---|---|
|
#18+
Ох уж эти ваши виндовз, совсем думать отучили... Может быть, есть смысл научиться запускать программы какими-то отличными от клика или дабл-клика способами? ;-) Варианты: 1. Вызвать команду с полным путем 2. Перейти перед запуском в директорию, где этот mysql.exe лежит 3. Добавить этот путь в PATH 4. Сделать на рабочем столе ярлык (см. п1) и запускать привычным дабл-кликом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 01:25 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39610315&tid=1830016]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
6ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 283ms |
| total: | 409ms |

| 0 / 0 |
