Как я могу вставить значение в определенный столбец с и оценки? - PullRequest
0 голосов
/ 29 апреля 2011

Пожалуйста, кто-нибудь может исправить этот вопрос для меня? не знаю как спросить = /

У меня есть 2 основных столбца:

КОНКУРС (ПК) и РЕЗУЛЬТАТ и другой столбец с именем RESULTCHECK

Мне нужно вставить значение «1» в столбец RESULTCHECK, где у RESULT есть какое-то утверждение типа.

например

CONTEST   RESULT
1          1,2,3,4,5
2          2,3,4,5,6

Я хочу что-то вроде INSERT INTO RESULTCHECK ЦЕННОСТИ 1 ГДЕ РЕЗУЛЬТАТ КАК '% 2,3%'

как я могу это сделать?

и в итоге я получаю текущий результат:

CONTEST    RESULT      RESULTCHECK
1          1,2,3,4,5   1
2          2,3,4,5,6   1
3          5,6,7,8,9   NULL

Ответы [ 3 ]

1 голос
/ 29 апреля 2011

Это потому, что ваша структура БД: НЕПРАВИЛЬНО .

Существует такая вещь, которая называется отношение "многие ко многим" и таблицы соединений .

По сути, вам нужен

CREATE TABLE ContestResults(
   contest_id INT NOT NULL,
   result_id INT NOT NULL,
   PRIMARY KEY ( contest_id , result_id ),
   FOREIGN KEY ( contest_id ) REFERENCES Contests( contest_is ) ,
   FOREIGN KEY ( result_id ) REFERENCES Results( result_is )
)

, где вы храните данные о связи между многими конкурсами и многими возможными результатами.

PS и, пожалуйста, используйтеанглийские названия для вещей в вашем коде.

1 голос
/ 29 апреля 2011

Вы должны прислушаться к совету @ teresko о правильном моделировании ваших данных (кроме английского), но в противном случае ответ будет

update TABLENAME set RESULTCHECK = 1 where RESULT like "%2,3%"
0 голосов
/ 29 апреля 2011

Если вы используете Firebird 2.5, думаю, вы также можете использовать ПОХОЖИЕ НА для регулярного выражения

Новый предикат ПОХОЖИЙ НА введен для поддержки регулярного выражения. Функция предиката чтобы проверить, является ли данный Стандартное SQL-выражение соответствует строковому аргументу. Это действительно в любом контексте, который принимает логическое значение выражения, такие как предложения WHERE, ПРОВЕРЬТЕ ограничения и PSQL IF () тесты

...