Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mssql. подзапрос в insert 
:(
    Опции темы
anti_snayper
Дата 29.7.2008, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



 Есть две таблицы. Первая таблица "questions" - id | question. Вторая таблица "answers" - answer_id | answer | correct | question_id. Надо в "answers" вставить запись вида: ('answer', 'correct', (Select question_id From questions Where question ='question')). Каряво канечно написал... 
Другими словами, первые 2 значения я подставляю сам, третье должно выбираться из базы запросом: 
Select question_id From questions Where question ='question'

Это сообщение отредактировал(а) anti_snayper - 29.7.2008, 09:06
PM MAIL   Вверх
Akina
Дата 29.7.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



какая СУБД? 

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
anti_snayper
Дата 29.7.2008, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



mssql
PM MAIL   Вверх
Nuzur
Дата 29.7.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



Цитата(anti_snayper @ 29.7.2008,  09:04)
Есть две таблицы. Первая таблица "questions" - id | question. Вторая таблица "answers" - answer_id | answer | correct | question_id. Надо в "answers" вставить запись вида: ('answer', 'correct', (Select question_id From questions Where question ='question')). Каряво канечно написал... 
Другими словами, первые 2 значения я подставляю сам, третье должно выбираться из базы запросом: 
Select question_id From questions Where question ='question'

INSERT INTO t( col1, col2, col3 )
VALUES('myfirstval', 'mysecondval', ( SELECT ... ) );

Но есть одно но. Значение ( SELECT ... ) должно быть уникальным тоесть возвращать всегда одно значение иначе получите ошибку. Удачи.
ЗЫ к сожелению MS SQL сейчас нет под рукой но Oracle отработал как надо а учитывая что они оба должны поддерживать стандарт 92 года то должно работать...


--------------------
Never again...
PM MAIL   Вверх
anti_snayper
Дата 30.7.2008, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Цитата(Nuzur @ 29.7.2008,  11:22)
Цитата(anti_snayper @ 29.7.2008,  09:04)
Есть две таблицы. Первая таблица "questions" - id | question. Вторая таблица "answers" - answer_id | answer | correct | question_id. Надо в "answers" вставить запись вида: ('answer', 'correct', (Select question_id From questions Where question ='question')). Каряво канечно написал... 
Другими словами, первые 2 значения я подставляю сам, третье должно выбираться из базы запросом: 
Select question_id From questions Where question ='question'

INSERT INTO t( col1, col2, col3 )
VALUES('myfirstval', 'mysecondval', ( SELECT ... ) );

Но есть одно но. Значение ( SELECT ... ) должно быть уникальным тоесть возвращать всегда одно значение иначе получите ошибку. Удачи.
ЗЫ к сожелению MS SQL сейчас нет под рукой но Oracle отработал как надо а учитывая что они оба должны поддерживать стандарт 92 года то должно работать...

Видимо нет... Выдает ошибку:"Subqueries are not allowed in this context. Only scalar expressions are allowed".

Все-равно спасибо за помощь!
PM MAIL   Вверх
ТоляМБА
Дата 31.7.2008, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Код
INSERT INTO answers (answer, correct, question_id)
SELECT 'myfirstval' AS A1, 'myfirstval' AS B1, question_id
From questions
Where question ='question'


Только если будет более одной строки в результате запроса ошибки не будет, но 'myfirstval' AS A1, 'myfirstval' AS B1 будут одинаковые

PM   Вверх
Akina
Дата 31.7.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(anti_snayper @  31.7.2008,  00:47 Найти цитируемый пост)
Выдает ошибку:"Subqueries are not allowed in this context. Only scalar expressions are allowed".

Я о том и говорю. Набор записей, в котором одна запись с одним полем, все равно остается набором записей, а не скалярным значением. И стандарт, кстати, не допускает этого. Просто некоторые движки имеют соответствующее нестандартное расширение (мускул, оракл, ...).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0975 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.