Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вложенный запрос. / 12 сообщений из 12, страница 1 из 1
26.02.2014, 14:55:03
    #38572996
Dagmanor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Всем доброго времени суток. Прошу помощи в написании вложенного запроса для Firebird 2.5. Работаю в Delphi 7 с помощью компонентов FIBPlus.

Запрос такой :


Код: sql
1.
2.
3.
SELECT * ,
 (SELECT test.guid from test where test.id IN (SELECT course_test.test_id FROM course_test WHERE course_test.course_id = 2)) AS test_guid 
FROM seminar WHERE seminar.id IN (SELECT course_seminar.seminar_id FROM course_seminar WHERE course_seminar.Course_id = 2)



Получаю вот такую ошибку:

SQL error code = -104.
Token unknown - line 1, column 121.
).
'. Process stopped. Use Step or Run to continue.

С Firebird работаю только недавно. Не могу понять в чем ошибка. Первой мыслью было, что я где-то лишнюю закрываюю скобку поставил (или не поставил открывающую). Но вроде с скобками все хорошо... Где же я затупил?
...
Рейтинг: 0 / 0
26.02.2014, 15:05:49
    #38573027
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Dagmanor
Код: sql
1.
2.
SELECT  * ,
 (SELECT . . .


добавьте перед "*" алиас/имя таблицы (у вас - это seminar)
...
Рейтинг: 0 / 0
26.02.2014, 15:09:49
    #38573034
Dagmanor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Добавил, теперь запрос выглядит так:


Код: sql
1.
2.
3.
SELECT seminar.* ,
 (SELECT test.guid from test where test.id IN (SELECT course_test.test_id FROM course_test WHERE course_test.course_id = 2)) AS test_guid 
FROM seminar WHERE seminar.id IN (SELECT course_seminar.seminar_id FROM course_seminar WHERE course_seminar.Course_id = 2)



и ошибка:
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 121.
).
'. Process stopped. Use Step or Run to continue.
(((
...
Рейтинг: 0 / 0
26.02.2014, 15:12:39
    #38573037
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Dagmanor, зачем нужен подзапрос test_guid , который более нигде не используется?
...
Рейтинг: 0 / 0
26.02.2014, 15:16:45
    #38573040
Dagmanor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Мне надо будет еще несколько полей из таблицы test, просто для простоты эксперимента пока поставил в выборку только 1 поле.
...
Рейтинг: 0 / 0
26.02.2014, 15:17:20
    #38573041
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Dagmanor,

у тебя структура БД кривая. Судя по запросу test_guid для всех записей семинара одинаков
...
Рейтинг: 0 / 0
26.02.2014, 15:19:22
    #38573046
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
DagmanorProcess stopped. Use Step or Run to continue.

это ты где такую ошибку получаешь?
...
Рейтинг: 0 / 0
26.02.2014, 15:24:15
    #38573051
Dagmanor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Симонов ДенисDagmanor,

у тебя структура БД кривая. Судя по запросу test_guid для всех записей семинара одинаков
Не одинаков , смотрел IB Expert-ом.



Симонов Денис DagmanorProcess stopped. Use Step or Run to continue.


это ты где такую ошибку получаешь?

В Delphi
...
Рейтинг: 0 / 0
26.02.2014, 15:25:07
    #38573055
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Dagmanor
Код: sql
1.
2.
3.
SELECT seminar.* ,
 (SELECT test.guid from test where test.id IN (SELECT course_test.test_id FROM course_test WHERE course_test.course_id = 2)) AS test_guid 
FROM seminar WHERE seminar.id IN (SELECT course_seminar.seminar_id FROM course_seminar WHERE course_seminar.Course_id = 2)

Странно как-то всё.
Ошибки быть теперь не должно. Проверяем в isql:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Database:  localhost/3253:/var/db/fb25/tmp.fdb
SQL> show version;
ISQL Version: LI-V2.5.3.26744 Firebird 2.5
Server version:
Firebird/linux AMD64 (access method), version "LI-V2.5.3.26744 Firebird 2.5"
Firebird/linux AMD64 (remote server), version "LI-V2.5.3.26744 Firebird 2.5/tcp (oel64)/P12"
Firebird/linux AMD64 (remote interface), version "LI-V2.5.3.26744 Firebird 2.5/tcp (oel64)/P12"
on disk structure version 11.2
SQL> recreate table test(id int, guid varchar(36));
SQL> recreate table seminar(id int);
SQL> recreate table course_seminar(seminar_id int, Course_id int);
SQL> recreate table course_test(course_id int, test_id int);
SQL> commit;
SQL> set planonly;
SQL> SELECT seminar.* ,
CON>  (SELECT test.guid
CON>   from test
CON>   where test.id
CON>   IN (SELECT course_test.test_id
CON>         FROM course_test
CON>         WHERE course_test.course_id = 2
CON>       )
CON>   ) AS test_guid
CON> FROM seminar
CON> WHERE seminar.id IN (
CON> SELECT course_seminar.seminar_id
CON> FROM course_seminar
CON> WHERE course_seminar.Course_id = 2
CON> );

PLAN (COURSE_SEMINAR NATURAL)
PLAN (COURSE_TEST NATURAL)
PLAN (TEST NATURAL)
PLAN (SEMINAR NATURAL)
SQL>

- всё пучком, как видим.
...
Рейтинг: 0 / 0
26.02.2014, 15:27:13
    #38573061
Dagmanor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
К слову IBExpert при попытке выполнить этот запрос говорит "multiple rows in singleton select.".
...
Рейтинг: 0 / 0
26.02.2014, 15:29:30
    #38573066
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Dagmanor,

ну дак правильно говорит. Просто надо научиться пользоваться JOINами
...
Рейтинг: 0 / 0
26.02.2014, 15:30:48
    #38573069
Dagmanor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенный запрос.
Симонов Денис,
Я буду очень благодарен, если Вы приведете мне небольшой пример.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вложенный запрос. / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]