powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Задача 2 с sql-ex
6 сообщений из 6, страница 1 из 1
Задача 2 с sql-ex
    #39804183
kristina1984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рассматривается БД кораблей, участвовавших во второй мировой войне. Имеются следующие отношения:
Classes (class, type, country, numGuns, bore, displacement)
Ships (name, class, launched)
Battles (name, date)
Outcomes (ship, battle, result)
Корабли в «классах» построены по одному и тому же проекту, и классу присваивается либо имя первого корабля, построенного по данному проекту, либо названию класса дается имя проекта, которое не совпадает ни с одним из кораблей в БД. Корабль, давший название классу, называется головным.
Отношение Classes содержит имя класса, тип (bb для боевого (линейного) корабля или bc для боевого крейсера), страну, в которой построен корабль, число главных орудий, калибр орудий (диаметр ствола орудия в дюймах) и водоизмещение ( вес в тоннах). В отношении Ships записаны название корабля, имя его класса и год спуска на воду. В отношение Battles включены название и дата битвы, в которой участвовали корабли, а в отношении Outcomes – результат участия данного корабля в битве (потоплен-sunk, поврежден - damaged или невредим - OK).
Замечания. 1) В отношение Outcomes могут входить корабли, отсутствующие в отношении Ships. 2) Потопленный корабль в последующих битвах участия не принимает.


Для таблицы Outcomes преобразовать названия кораблей, содержащих более одного пробела, следующим образом.
Заменить все символы между первым и последним пробелами (исключая сами эти пробелы) на символы звездочки (*)
в количестве, равном числу замененных символов.

Вывод: название корабля, преобразованное название корабля

Пишу такое решение:
Код: sql
1.
2.
3.
4.
5.
select
ship,
stuff(ship, charindex(' ',ship)+1, len(ship)-charindex(' ',reverse(ship))- charindex(' ',ship), replicate('*',len(ship)-charindex(' ',reverse(ship))-charindex(' ',ship))) as new_name
from outcomes
where charindex(' ',ship) < len(ship)-charindex(' ',reverse(ship)) +1 and charindex(' ',ship) > 0



В ответ получаю следующее:
Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе.
* Неверное число записей (меньше на 1)

И подсказка: Подcказки к задаче №2
Учтите имя корабля, состоящее из одних пробелов.


Никак не могу понять в чем проблема и какой случай я отсекаю своими условиями? Неужели с одними пробелами? Но если в имени только пробелы, то charindex(' ',ship) будет равно 1?
Пожалуста подскажите, какой случай мне надо рассмотреть
...
Рейтинг: 0 / 0
Задача 2 с sql-ex
    #39804200
Synoptic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если пробелы в конце названия кораблей? ;)
...
Рейтинг: 0 / 0
Задача 2 с sql-ex
    #39804201
Synoptic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати, у len() есть небольшая особенность ))
Думаю, уже достаточно подсказал
...
Рейтинг: 0 / 0
Задача 2 с sql-ex
    #39804224
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kristina1984
Код: sql
1.
stuff(

kristina1984
Код: sql
1.
charindex(

kristina1984
Код: sql
1.
len(

В MySQL нет таких функций. У вас точно MySQL ?
...
Рейтинг: 0 / 0
Задача 2 с sql-ex
    #39804243
Synoptic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВ MySQL нет таких функций. У вас точно MySQL ?Человек познаёт мир SQL, не всё сразу )
...
Рейтинг: 0 / 0
Задача 2 с sql-ex
    #39804249
kristina1984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Synoptic, огромное спасибо!
Заменила на DATALENGTH и все заработало!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Задача 2 с sql-ex
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]