Вверх ↑
Этот топик читают: Гость
Ответов: 927
Рейтинг: 3
#1591: 2019-02-13 22:53:36 ЛС | профиль | цитата
С лайком у меня только 1 проблема пока - регистрозависимость.
БД перевел в UTF8.
Пример моей таблицы выше был дан лишь для примера.
В реале эта таблица и есть полная запись данных по заказу. 4 столбца которой выделены под Фамилии исполнителей.
CREATE TABLE tab (
id INTEGER,
nomerz TEXT,
obekt TEXT,
adress TEXT,
....
fio1 TEXT,
fio2 TEXT,
fio3 TEXT,
fio4 TEXT,
dogr TEXT,
....
);
Возникла нужда ставить на заказ больше 4 исполнителей, посему подумал, что Фамилии любого кол-ва исполнителей можно указывать в 1 ячейке записи. Таким образом оптимизируя конструкцию запроса, который сегодня выглядит примерно так " WHERE fio1='Иванов П.С' OR fio2='Иванов П.С' OR fio3='Иванов П.С' OR fio4='Иванов П.С'..." или так " WHERE fio1 LIKE '%Иванов%' OR fio2 LIKE '%Иванов%' OR fio3 LIKE '%Иванов%' OR fio4 LIKE '%Иванов%'... " Так как Иванов П.С. может быть в любой ячейке fio1-fio4.
Так вот сейчас стоит задача объединить данные за прошедшие ячеек fio1-fio4 в столбец fio1 , и удалить после этого ненужные столбцы fio2-fio4 из БД.

Редактировалось 2 раз(а), последний 2019-02-13 22:57:22
карма: 0

0
Ответов: 16474
Рейтинг: 1212
#1592: 2019-02-14 07:43:21 ЛС | профиль | цитата
UPDATE tab SET fio1=fio1||","||fio2||","||fio3||","||fio4
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 927
Рейтинг: 3
#1593: 2019-03-21 09:07:31 ЛС | профиль | цитата
Есть ли возможность оформить в 1 запрос следующие команды?
UPDATE note SET fioisp1="Петров" WHERE fioisp1="Иванов";
UPDATE note SET fioisp2="Петров" WHERE fioisp2="Иванов";
UPDATE note SET fioisp3="Петров" WHERE fioisp3="Иванов";
карма: 0

0
Ответов: 3930
Рейтинг: 620
#1594: 2019-03-21 11:43:40 ЛС | профиль | цитата
Походу, решение когда исполнители заданы в 4-х колонках - не очень хорошее. Должны быть "таблица сотрудников", "таблица заказов" и "таблица исполнителей" - связь "ИД заказа -> ИД сотрудника".

Одним запросом (если в SQLite есть функция iif()):
UPDATE note
set
fioisp1 = iif(fioisp1="Иванов", "Петров", fioisp1),
fioisp2 = iif(fioisp2="Иванов", "Петров", fioisp2),
fioisp3 = iif(fioisp3="Иванов", "Петров", fioisp3)


Редактировалось 2 раз(а), последний 2019-03-21 16:10:26
карма: 19

0
Ответов: 16474
Рейтинг: 1212
#1595: 2019-03-23 17:30:33 ЛС | профиль | цитата
Netspirit писал(а):
Одним запросом (если в SQLite есть функция iif())
iif в SQLite нет.

Netspirit писал(а):
Должны быть "таблица сотрудников", "таблица заказов" и "таблица исполнителей" - связь "ИД заказа -> ИД сотрудника".



Редактировалось 1 раз(а), последний 2019-03-23 17:31:34
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
1595
Сообщение
...
Прикрепленные файлы
(файлы не залиты)