Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2015.03.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.002 c
15-1406016299
Dmitry_Wellington
2014-07-22 12:04
2015.03.08
HTML5 vs Obj-C. Что быстрее выучить?


2-1391182666
Мишаня
2014-01-31 19:37
2015.03.08
Как узнать количество дней выбранного месяца?


11-1259084014
Егорка
2009-11-24 20:33
2015.03.08
LVCustomDraw


15-1406179272
oldman
2014-07-24 09:21
2015.03.08
Русско-английский словарь по деловой переписке


11-1258544846
Егорка
2009-11-18 14:47
2015.03.08
интерфейснутые классы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский