Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#166: 2009-05-28 23:49:54 ЛС | профиль | цитата
SELECT * FROM note WHERE Ispolnit2 LIKE "%2"

user_asm, вопрос: Что ты хочешь отобрать этим запросом ?
Выбрать, например, все заявки у которых Ispolnit2 = Иванов, Ивасюк, Иванченко, Ивлев и т.д.
Что это тебе даст ?
Структуру БД для твоего случая переделывать нужно.
То что хорошо для простой Записной книжки для тебя совсем не подходит.
ИМХО.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#167: 2009-06-02 16:02:14 ЛС | профиль | цитата
У меня все отлично подошло.
Т.к. я когда вношу исполнителя могу внести его как в 1 так и во 2 колонку Ispolnit*, то мне необходим был поиск по всем колонкам.
Т.е. я сделал клиентскую версию проги с задизейбленными кнопками и полями, такие как удалить и т.д. Допустим человек хочет глянуть свои заявки. Открывает поиск, выбирает свою фамилию, запускает поиск и получает таблицу где содержатся записи в которых в одном из полей Ispolnit1,2,3,4 содержится его фамилия. В дальнейшем он может экспортировать эту таблицу в CSV файл, внести примечания и т.д.
Админская версия, т.е. полная которую буду юзать я запускается только после ввода пароля. Это сделал навесной защитой.
Вот в принципе и все
Большое спасибо господа за помощь.
Конечно буду корректировать еще в процессе эксплуатации и по пожеланиям пользователей и т.д. но основное уже сделано И это радует

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#168: 2009-06-02 17:25:22 ЛС | профиль | цитата
user_asm писал(а):
У меня все отлично подошло.
Вот здесь можно поспорить.
1. Имея БД, хранить (закзчики, исполнители и т.п.) в каких-то еще ini или txt файлах - нонсенс.
2. Т.е. нужно было организовать еще таблицы для этих данных.
3. При заполнении документа можешь иметь хоть 10 полей Исполнитель1..Исполнитель10, а в базу note советую вводить их в одно поле в виде
"1#2#3#4" где 1 это "Иванов" в таблице исполнителей, а 2 - это Сидоров (идентификатор).
И сама запись в таблице в результате была-бы меньше. А короче запись - быстрее обработка.
(Но это поймешь, когда записей наберется тысяч с 10. )

Тогда запрос Иванова на поиск своих документов смотрелся бы так:
SELECT * FROM note WHERE Ispolnit LIKE '%%1%' ; где %1 это 1
а сейчас прийдется писать
SELECT * FROM note WHERE Ispolnit1 = '%1' OR Ispolnit2 = '%1' OR Ispolnit3 = '%1' OR Ispolnit4 = '%1'; где %1 это 'Иванов'
плюс еще, для устранения возможных ошибок, возможно прийдется (перед записью в базу) применить к данным компоненты StrCase и Trim

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#169: 2009-06-03 22:07:28 ЛС | профиль | цитата
Tad, у меня к тебе задачка. Есть некий сложный запрос вида.
Млин, пришлось сделать файлом, форум от него так переколбасило

Он прекрасно выдает одной строкой необходимую инфу. В данном запросе обращение идет к трем таблицам

А вот теперь вопрос -- можно ли это сделать одним подзапросом в цикле Внимание! Одно условие -- все это должно быть в одном компоненте, рассыпуху не предлагать (так и я бы смог)
карма: 22

0
файлы: 1project_query_22.sha [1.4KB] [181]
Ответов: 16884
Рейтинг: 1239
#170: 2009-06-03 22:20:16 ЛС | профиль | цитата
nesco писал(а):
пришлось сделать файлом
не вижу.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#171: 2009-06-03 22:22:57 ЛС | профиль | цитата
Tad писал(а):
не вижу

Хе, через правку появился. Во, шутки
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#172: 2009-06-04 00:25:40 ЛС | профиль | цитата
nesco писал(а):
Он прекрасно выдает одной строкой необходимую инфу
Строку показать можешь ?
------------ Дoбавленo в 00.27:
А если в 8 строк
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#173: 2009-06-04 00:40:32 ЛС | профиль | цитата
Tad писал(а):
Строку показать можешь ?

А вот и строка

#$14;Вход №1#$14;Вход №2#$14;Вход №3#$14;Вход №4#$14;Вход №5#$14;Вход №6#$16;Вход №7#$14;Вход №8


Tad писал(а):
А если в 8 строк


Если бы это было 8 строк, я бы это и сам решил. Мне интересно, есть ли решение такого подзапроса в циклическом виде в одном запросе ? Вот про это я тебя и спросил. Возможно, ты уже сталкивался с такого типа подзапросами. Мне стало интересно получать результат в одном запросе после той самой попытки получить эмулятор QueryScalar, реализацию которого, ты уже видел
------------ Дoбавленo в 00.49:
Да, кстати, весь этот запрос с кучей объединенных подзапросов занимает добрую страницу, я привел только хвост, для которого нашел только такое решение
------------ Дoбавленo в 00.55:
Ладно, пример примером. Задам вопрос в лоб -- есть ли возможность объединять полученные SELECT-ом строки в мультисторочном запросе
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#174: 2009-06-04 01:17:39 ЛС | профиль | цитата
Перешел в личку.
Мне лично так делать не приходилось.
Может tsdima подскажет ...
Если переделать вот этот кусок
' №' || numinput FROM input WHERE number = 70031041 AND numinput = 1
на
' №' || numinput FROM input WHERE number = 70031041 AND numinput in(1,2,3,4,5,6,7,8)
а результат загнать в MT, то можно получить то же с более коротким запросом.


------------ Дoбавленo в 01.20:
С утра покопаюсь.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#175: 2009-06-04 01:40:11 ЛС | профиль | цитата
Tad писал(а):
а результат загнать в MT, то можно получить то же с более коротким запросом

Это я знаю. Интерес, именно в одном запросе
карма: 22

0
Ответов: 952
Рейтинг: 4
#176: 2009-06-04 11:07:18 ЛС | профиль | цитата
Ну вот и пошли внесения изменений.
Потребовалось добавить в БД один столбец, как это корректно провести?
В формы редактирования удаления внесу изменения, там все просто, а вот с добавлением столбца что-то никак.
карма: 0

0
Ответов: 2125
Рейтинг: 159
#177: 2009-06-04 11:24:42 ЛС | профиль | цитата
nesco писал(а):
Задам вопрос в лоб -- есть ли возможность объединять полученные SELECT-ом строки в мультисторочном запросе

В стандарте SQL агрегатная функция sum не работает для строк (видимо, не сделали из опасений, что результат может оказаться слишком большим). Но для SQLite, например, можно сделать свою агрегатную функцию, которая работала бы для строк.
карма: 1

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#178: 2009-06-04 12:21:06 ЛС | профиль | цитата
tsdima писал(а):
В стандарте SQL агрегатная функция sum не работает для строк (видимо, не сделали из опасений, что результат может оказаться слишком большим)

В принципе, что и требовалось доказать.
tsdima писал(а):
Но для SQLite, например, можно сделать свою агрегатную функцию, которая работала бы для строк

Да, я знаю, что можно. Но интерес был стандартным подзапросом оформить
карма: 22

0
Ответов: 952
Рейтинг: 4
#179: 2009-06-04 12:34:35 ЛС | профиль | цитата
хоть какая команда отвечает за добавление столбца в БД?
карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#180: 2009-06-04 12:40:53 ЛС | профиль | цитата
user_asm писал(а):
хоть какая команда отвечает за добавление столбца в БД?

Тебе чего, справку в падлу почитать, или как

Синтаксис SQLite
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)