powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вложенный запрос.
12 сообщений из 12, страница 1 из 1
Вложенный запрос.
    #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
Вложенный запрос.
    #38573027
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dagmanor
Код: sql
1.
2.
SELECT  * ,
 (SELECT . . .


добавьте перед "*" алиас/имя таблицы (у вас - это seminar)
...
Рейтинг: 0 / 0
Вложенный запрос.
    #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
Вложенный запрос.
    #38573037
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dagmanor, зачем нужен подзапрос test_guid , который более нигде не используется?
...
Рейтинг: 0 / 0
Вложенный запрос.
    #38573040
Dagmanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне надо будет еще несколько полей из таблицы test, просто для простоты эксперимента пока поставил в выборку только 1 поле.
...
Рейтинг: 0 / 0
Вложенный запрос.
    #38573041
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dagmanor,

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

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

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



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


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

В Delphi
...
Рейтинг: 0 / 0
Вложенный запрос.
    #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
Вложенный запрос.
    #38573061
Dagmanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К слову IBExpert при попытке выполнить этот запрос говорит "multiple rows in singleton select.".
...
Рейтинг: 0 / 0
Вложенный запрос.
    #38573066
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dagmanor,

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


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