Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.03.08;
Скачать: CL | DM;

Вниз

помогите с запросом..   Найти похожие ветки 

 
Vlad oshin pc_other   (2014-07-24 13:11) [0]

немного ошибся с сохранением..
но ситуация однозначно определяется, не соображу как

ситуация такая:
человека спрашиваем, какие он знает марки {молока}
при этом у оператора на экране выведены некие марки
id name
1  М1
2  М2
3  М3
4  М4
5  М5
если человек называет марку, которую оператор видит (1-5), оператор ее кликает, она исчезает.
исчезнутое записывается в поле таблицы через пробел
т.е. пусть человек вспомнил молоко 1 и 4, тогда в поле А1 запишется "1 4"

когда человек закончил вспоминать, оператор зачитывает оставшееся сверху вниз и спрашивает, слышал ли человек про молоко такое то, и так по всем оставшимся. Данные записываются в другое поле через пробел.
Ошибка моя в том, что я не пишу туда id..
я пишу туда 1 - да, 2 - нет..

т.е. в таблице поля заполнены так
Ф1 = "1 4" - сам вспомнил по молоко 1 и 4
Ф2 = "1 1 2" - слышал молоко 2 и 3, не слышал про 5тое

как бы мне теперь получить
1  М1 - знает
2  М2 - слышал
3  М3 - слышал
4  М4 - знает
5  М5 - НЕ слышал


 
Inovet ©   (2014-07-24 13:24) [1]

Ошибка ещё и в писание через пробел.

Ну как получить теперь? Я бы переделал структуру и написал разовый конвертор под неё.


 
Inovet ©   (2014-07-24 13:28) [2]

> [1] Inovet ©   (24.07.14 13:24)

Получить-то не проблема, только коряво будет и медленно. Со "знает" ещё ничё, а с теми надо сортировать по id и сравнивать с символами из строки на "1" и "2".


 
Vlad oshin pc_other   (2014-07-24 13:43) [3]

да вот и ерунда..
наверное, придется писать функцию.. от строковых полей, возврат - таблица
и с ней соединять

медленно, да..

а потом да, лучше переделать.


 
KilkennyCat ©   (2014-07-24 13:44) [4]


> Я бы переделал структуру и написал разовый конвертор под
> неё.

однозначно.

самый простой вариант таблицы:
Фио | м1  | м2 | м3 | м4 | м5 |
вася пупкин | знает | слышал  | слышал | знает | неслышал |

причем м1..м2 можно тупо set.

вообще странно записать эти данные иным способом.


 
KilkennyCat ©   (2014-07-24 13:46) [5]


> а потом да, лучше переделать.

переделай сейчас. быстрее будет. тем более, что от конвертора не требуется никакой красивости, накалякал абы как и готово.


 
Vlad oshin pc_other   (2014-07-24 13:55) [6]

да тут еще вот какое дело
мой только интерфейс и в тз  ясно написано - писать в одно поле, через пробел
и тз на отчет
.эх, если бы id писал..
блин..


 
Inovet ©   (2014-07-24 13:56) [7]

> [6] Vlad oshin pc_other   (24.07.14 13:55)
> .эх, если бы id писал..

Ну так отконвертируй в ИД. Техзадание не подлежит пересмотру?


 
Inovet ©   (2014-07-24 13:59) [8]

> [4] KilkennyCat ©   (24.07.14 13:44)
> самый простой вариант таблицы:
> Фио | м1  | м2 | м3 | м4 | м5 |

Это лишнее, достаточно:

Ид_Опрашиваемого, Ид_Вопроса, Код_Ответа(1, 2, 3).


 
Vlad oshin pc_other   (2014-07-24 14:04) [9]


> Техзадание не подлежит пересмотру?

могу писать что угодно, но поля два


 
Vlad oshin pc_other   (2014-07-24 14:06) [10]

да, и пробела нет в тз
просто в аналогичном проекте, который мне дали для ознакомления и сделать по аналогии, так было


 
Vlad oshin pc_other   (2014-07-24 14:07) [11]


> переделай сейчас.

прямо сейчас не могу
только ночью


 
KilkennyCat ©   (2014-07-24 14:51) [12]


> Это лишнее, достаточно:
>
> Ид_Опрашиваемого, Ид_Вопроса, Код_Ответа(1, 2, 3).

ага три таблицы. таблица вопросов, таблица опрашиваемых и общая.
в общей будет число записей, равных числу вопросов.
база больше,запросы сложнее.

странная нормализация, не?


 
KilkennyCat ©   (2014-07-24 14:54) [13]


> Vlad oshin pc_other

ну если не переделывать, то я бы просто создал массив молока.
и заполнил за два этапа
первый - установили ячейки по индексам Ф1
второй - пробежались по массиву и незаполненные ячейки установили согласно Ф2.


 
KilkennyCat ©   (2014-07-24 15:03) [14]

первый
for i = 1 to F1.length do begin
  if F1[i] = " " or F1 = "" then continue;
  M[strtoint[F1[i]] := "знает";
end;

второй
x := 1;
for i = 1 to high(M) do begin
  if M[i] = "знает" then continue;
  while F2[x] = " " or F2[x] = "" do inc(x);
  M[i] := F2[x];
  inc(x);
end;

как-то так. добавить проверку индексов и размера строк...


 
Inovet ©   (2014-07-24 15:03) [15]

> [12] KilkennyCat ©   (24.07.14 14:51)
> странная нормализация, не?

Нормальная (ага) нормализация. Заранее неизвестно количество опрашиваемых, количество вопросов/сортов_молока/прочих_продуктов_и_услуг. Оветов других, кроме трёх, пока что нет, но даже если будут, так добавить можно, чтобы для них ещё одну таблицу не делать. Так что нормальная нормализация.


 
ухты   (2014-07-24 15:07) [16]

xml


 
KilkennyCat ©   (2014-07-24 15:08) [17]

или так
x_f1 := 1;
x_f2 := 1;
for i := 1 to High(M) do begin
   while F1[x_f1] = " " or F1[x_f1] = "" do inc(x_f1);
   while F2[x_f2] = " " or F2[x_f2] = "" do inc(x_f2);
   if inttostr(F1[x_f1]) = i then begin
      M[i] := "знает";
      inc(x_f1);
   end else begin
      M[i] := F2[x_f2];
      inc(x_f2);
   end;
end;


 
KilkennyCat ©   (2014-07-24 15:14) [18]


> Inovet ©   (24.07.14 15:03) [15]

ты посмотри на существующее тз. там все жестко. потому что пробельная запись полностью станет неверной, даже если просто поменять сорта местами.
и значит нафига планировать, что возможно когда-то, зачем-то, что-то еще будет? тогда нет предела совершенству и попадешь в ад для перфекциониста )


 
Inovet ©   (2014-07-24 15:18) [19]

> [18] KilkennyCat ©   (24.07.14 15:14)
> ты посмотри на существующее тз.

Так невозможность изменить ТЗ была озвучена позже, и в нём всё равно нельзя поля добавлять.


 
KilkennyCat ©   (2014-07-24 15:24) [20]


> Inovet ©   (24.07.14 15:18) [19]

невозможность изменения уже видна из метода записи, можно было и не озвучивать.
а добавлять можно, но только в конец.


 
Vlad oshin pc_other   (2014-07-24 15:55) [21]

да, два поля. Из доступных. Оба varchar(300). Писать можно что угодно туда.


 
Vlad oshin pc_other   (2014-07-24 15:56) [22]

марок может быть больше
но в разумных колвах (более 20 не может, человек скажет интервьюверу что он издевется и просто не станет отвечать :))


 
Vlad oshin pc_other   (2014-07-24 15:58) [23]


> марок может быть больше

в следующем опросе т.е.
там таблицы будут новые, чистые и справочник, соотв. другой


 
virex(mobile)   (2014-07-24 16:40) [24]

>KilkennyCat ©   (24.07.14 13:44) [4]
>
> самый простой вариант таблицы:
> Фио | м1  | м2 | м3 | м4 | м5 |
> вася пупкин | знает | слышал  | слышал | знает | неслышал


сериализуемый объект THuman с публичными свойствами, и два метода: сериализация/десериализация


 
ВладОшин ©   (2014-07-25 08:07) [25]

Конвертнул в [id][знает/не знает][,]

> Ф1 = "1 4" - сам вспомнил по молоко 1 и 4
> Ф2 = "1 1 2" - слышал молоко 2 и 3, не слышал про 5тое

1 1 2 -> 21,31,52

>> KilkennyCat ©  
не проблема на делфи разложить
проблема была запросом показать, функция очень тормознутая получилась


 
ВладОшин ©   (2014-07-25 15:47) [26]

попробую пароль вспомнить



Страницы: 1 вся ветка

Текущий архив: 2015.03.08;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.006 c
11-1258544846
Егорка
2009-11-18 14:47
2015.03.08
интерфейснутые классы


15-1406406602
Юрий
2014-07-27 00:30
2015.03.08
С днем рождения ! 27 июля 2014 воскресенье


15-1406550400
nokia4ever
2014-07-28 16:26
2015.03.08
перевод на дельфи


15-1406295490
AngryOwl
2014-07-25 17:38
2015.03.08
Битовая логика


3-1302683163
samalex2504
2011-04-13 12:26
2015.03.08
Фильтрация в TIBQuery