|
|
|
Помогите новичку составить запрос!))
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Я новичок в 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 файла и т.д. В базе таких записей тысячи, мне нужно проверить, что везде есть пары. Нужен итог в виде количества файлов. Чтоб потом задать условие, что где не два файла, там ошибка. Помогите составить работающую штуку! Мой мозг не может выдать ничего путного :( Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 15:17:09 |
|
||
|
Помогите новичку составить запрос!))
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. не "тру" конечно, но первое что смог придумать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 15:56:52 |
|
||
|
Помогите новичку составить запрос!))
|
|||
|---|---|---|---|
|
#18+
SharuPoNemnogu Код: sql 1. 2. 3. 4. 5. 6. 7. не "тру" конечно, но первое что смог придумать) думаю одна текстовая функция преобразующая строку в строку отработает быстрее чем две вместо реплейса двойного(а если расширения 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 (если точно однобайтная кодировка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 16:31:09 |
|
||
|
Помогите новичку составить запрос!))
|
|||
|---|---|---|---|
|
#18+
alex564657498765453SharuPoNemnogu Код: sql 1. 2. 3. 4. 5. 6. 7. не "тру" конечно, но первое что смог придумать) думаю одна текстовая функция преобразующая строку в строку отработает быстрее чем две вместо реплейса двойного(а если расширения 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 (если точно однобайтная кодировка) и судя по разнице в работе ленгс и чарленгс, делаю вывод что в тесте эти функции щитают длину строки, а ведь когда имеем дело с таблицей, там изначально извесна длина записи если варчар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 16:32:38 |
|
||
|
Помогите новичку составить запрос!))
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Про substring я как то и не подумал... но я и сразу сказал что вариант не самый лучший) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 16:55:58 |
|
||
|
Помогите новичку составить запрос!))
|
|||
|---|---|---|---|
|
#18+
SharuPoNemnogu, спасибо, у меня заработало!!!)))) Теперь вопрос вот в чем: как соединить два аналогичных запроса? У меня две пары "пар файлов": xml и csv, req и out. Я составила два аналогичных запороса. По отдельности работают!))) А как их связать? Я чайник))) Почитала в интернете про функцию union all, написала между двумя запросами эти два слова, запустила. Ошибку не выдал, но второй запрос тоже не исполнил (т.е. результат второго запроса (после union all) не показывается, будто я первый запрос отдельно запустила). Что я не так делаю, и как это исправить? Подскажите, пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 17:16:28 |
|
||
|
Помогите новичку составить запрос!))
|
|||
|---|---|---|---|
|
#18+
Violetta256, так вариант alex564657498765453 вам в помощь. вместо Код: sql 1. поставьте Код: sql 1. если покажет 4, то все файлы есть (при учете того, что имена одинаковые) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 17:29:06 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38654847&tid=1834750]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 207ms |
| total: | 347ms |

| 0 / 0 |
