powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите новичку составить запрос!))
7 сообщений из 7, страница 1 из 1
Помогите новичку составить запрос!))
    #38654652
Violetta256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Я новичок в sql, опыт работы с ним 1 день))))
Тем не менее, дали задание составить запрос. Помогите, пожалуйста!

Суть такая: есть табличка, содержащая столбец, в котором указываются наименования файликов с разрешениями. Всего два вида разрешения - xml и csv.
Таким образом, в табличке записываются имена этих файликов с их разрешениями, например: 1111.xml, 1111.csv, 2222.xml, 2222.csv, 3333.xml, 3333.csv и т.д. Т.е. имеются пары файликов с одинаковыми названиями, но разными разрешениями.
И вот моя задача - посчитать количество файликов с ОДИНАКОВЫМ НАЗВАНИЕМ (разрешение роли не играет). Т.е. 1111.xml и 1111.csv - 2 файла, 2222.xml, 2222.csv - 2 файла и т.д.
В базе таких записей тысячи, мне нужно проверить, что везде есть пары.
Нужен итог в виде количества файлов. Чтоб потом задать условие, что где не два файла, там ошибка.

Помогите составить работающую штуку! Мой мозг не может выдать ничего путного :(
Заранее спасибо!
...
Рейтинг: 0 / 0
Помогите новичку составить запрос!))
    #38654708
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT f, COUNT( f ) AS kol
FROM (
SELECT REPLACE( REPLACE( 
FILE ,  '.csv',  '' ) ,  '.xml',  '' ) AS f
FROM  `test`
) AS tmp
GROUP BY f


не "тру" конечно, но первое что смог придумать)
...
Рейтинг: 0 / 0
Помогите новичку составить запрос!))
    #38654760
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT f, COUNT( f ) AS kol
FROM (
SELECT REPLACE( REPLACE( 
FILE ,  '.csv',  '' ) ,  '.xml',  '' ) AS f
FROM  `test`
) AS tmp
GROUP BY f


не "тру" конечно, но первое что смог придумать)

думаю одна текстовая функция преобразующая строку в строку отработает быстрее чем две

вместо реплейса двойного(а если расширения 10 будет :) )
использовать сабстринг

select benchmark(30000000, REPLACE( REPLACE( 'kfdjslfkj.txt' , '.txt', '' ) , '.xml', '' ) );
1 query: 22,589 sec

select benchmark(30000000, substring('kfdjslfkj.txt',1,char_length('kfdjslfkj.txt')-4) );
1 query: 16,333 sec

select benchmark(30000000, substring('kfdjslfkj.txt',1,length('kfdjslfkj.txt')-4) );
1 query: 10,047 sec
(если точно однобайтная кодировка)
...
Рейтинг: 0 / 0
Помогите новичку составить запрос!))
    #38654762
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453SharuPoNemnogu
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT f, COUNT( f ) AS kol
FROM (
SELECT REPLACE( REPLACE( 
FILE ,  '.csv',  '' ) ,  '.xml',  '' ) AS f
FROM  `test`
) AS tmp
GROUP BY f


не "тру" конечно, но первое что смог придумать)

думаю одна текстовая функция преобразующая строку в строку отработает быстрее чем две

вместо реплейса двойного(а если расширения 10 будет :) )
использовать сабстринг

select benchmark(30000000, REPLACE( REPLACE( 'kfdjslfkj.txt' , '.txt', '' ) , '.xml', '' ) );
1 query: 22,589 sec

select benchmark(30000000, substring('kfdjslfkj.txt',1,char_length('kfdjslfkj.txt')-4) );
1 query: 16,333 sec

select benchmark(30000000, substring('kfdjslfkj.txt',1,length('kfdjslfkj.txt')-4) );
1 query: 10,047 sec
(если точно однобайтная кодировка)

и судя по разнице в работе ленгс и чарленгс, делаю вывод что в тесте эти функции щитают длину строки, а ведь когда имеем дело с таблицей, там изначально извесна длина записи если варчар.
...
Рейтинг: 0 / 0
Помогите новичку составить запрос!))
    #38654796
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

Про substring я как то и не подумал... но я и сразу сказал что вариант не самый лучший)
...
Рейтинг: 0 / 0
Помогите новичку составить запрос!))
    #38654832
Violetta256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu, спасибо, у меня заработало!!!))))

Теперь вопрос вот в чем: как соединить два аналогичных запроса?

У меня две пары "пар файлов": xml и csv, req и out.
Я составила два аналогичных запороса. По отдельности работают!)))

А как их связать?
Я чайник))) Почитала в интернете про функцию union all, написала между двумя запросами эти два слова, запустила. Ошибку не выдал, но второй запрос тоже не исполнил (т.е. результат второго запроса (после union all) не показывается, будто я первый запрос отдельно запустила).

Что я не так делаю, и как это исправить?
Подскажите, пожалуйста!
...
Рейтинг: 0 / 0
Помогите новичку составить запрос!))
    #38654847
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violetta256,

так вариант alex564657498765453 вам в помощь.
вместо
Код: sql
1.
REPLACE( REPLACE( FILE ,  '.csv',  '' ) ,  '.xml',  '' )


поставьте
Код: sql
1.
substring(FILE,1,length(FILE)-4)



если покажет 4, то все файлы есть (при учете того, что имена одинаковые)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите новичку составить запрос!))
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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