Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрос с подзапросом и * / 16 сообщений из 16, страница 1 из 1
02.09.2018, 06:27
    #39696752
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Проверял на FB 2.5 и FB 3.0 - поведение одно и то же.

Вот этот запрос не подготавливается:
Код: sql
1.
2.
3.
4.
5.
SELECT
    1,
    *
FROM
    RDB$DATABASE


Код: plaintext
1.
2.
3.
4.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 5.
*.

Чтобы он подготовился, требуется указать имя таблицы/альяса перед *. Перевод подзапроса вторым полем не влияет на итог.
Вопрос: такое поведение корректно или это недопонимание парсера?
...
Рейтинг: 0 / 0
02.09.2018, 12:32
    #39696800
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
CyberMax,

корректно
...
Рейтинг: 0 / 0
03.09.2018, 07:38
    #39696975
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Симонов Денис,

Почему корректно?
P.S. MS SQL этот запрос понимает.
...
Рейтинг: 0 / 0
03.09.2018, 09:23
    #39697004
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
CyberMaxP.S. MS SQL этот запрос понимает.

ну и что? По идее надо смотреть что говорит SQL-стандарт. Но мне пока лень искать его.

Похоже разные SQL серверы по разному обрабатывают это. Вот пример на Oracle

Код: sql
1.
2.
3.
4.
select 
  1,
  *
from company  



ORA-00936: missing expression

ИХМО, такие запросы лучше не писать, раз уж каждый сервер толкует как хочет. Тем более что ты уже знаешь как сделать правильно.
...
Рейтинг: 0 / 0
03.09.2018, 13:39
    #39697167
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Симонов ДенисПо идее надо смотреть что говорит SQL-стандарт.

SQL 1999ISO/IEC 9075-2:1999 (E) ©ISO/IEC

7.11 <query specification>

<query specification> ::=
SELECT [ <set quantifier> ] <select list>
<table expression>

<select list> ::=
<asterisk>
| <select sublist> [ { <comma> <select sublist> }... ]

<select sublist> ::=
<derived column>
| <qualified asterisk>

< qualified asterisk> ::=
<asterisked identifier chain> <period> <asterisk>
| <all fields reference>

<asterisked identifier chain> ::=
<asterisked identifier> [ { <period> <asterisked identifier> }... ]

<asterisked identifier> ::= <identifier>


Т.е. чисто по стандарту может быть либо SELECT [ALL | DISTINCT] * FROM ..... , либо если между SELECT и FROM появилось хоть что-то ещё, то уже только QUALIFIED asterisk
...
Рейтинг: 0 / 0
03.09.2018, 13:41
    #39697170
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
кстати, забавная фишка оказывается в стандарте есть

кроме

SELECT .....
UNION
SELECT ......

есть ещё

SELECT .....
EXCEPT
SELECT ......

Язык множест, таки....
...
Рейтинг: 0 / 0
03.09.2018, 13:42
    #39697172
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Симонов ДенисПо идее надо смотреть что говорит SQL-стандарт

Но вообще говоря - это не так, надо смотреть документацию firebird и синтаксические схемы из неё
...
Рейтинг: 0 / 0
03.09.2018, 14:32
    #39697212
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Arioch,

да как бы я знаю, что синтаксические схемы Firebird такого не позволяют. Поэтому и ответ был дан сразу. Другое дело, что CyberMax сослался на то, что MS SQL могёт, тогда почему бы и Firebird не мочь. Раз есть такой спор, то судья уже SQL-стандарт.
...
Рейтинг: 0 / 0
03.09.2018, 15:17
    #39697237
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Просто из любопытства проверил -
SyBase SQL Anywhere 5.5 (SQL-92):

select 1,* from country

работает без каких-либо предупреждений...
...
Рейтинг: 0 / 0
03.09.2018, 15:24
    #39697240
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
03.09.2018 15:17, d7i пишет:
> SyBase SQL

было бы странно если б не так как в клоне.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.09.2018, 15:45
    #39697249
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Apache Derby:
Код: plaintext
1.
ij> select 1, * from test;
ОШИБКА 42X01: Синтаксическая ошибка: Encountered "*" at line 1, column 11
...
Рейтинг: 0 / 0
03.09.2018, 16:08
    #39697262
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Мимопроходящий,

разве MS SQL - не informix ?
...
Рейтинг: 0 / 0
03.09.2018, 16:22
    #39697268
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Arioch,

спаси и сохрани. MS SQL клон Sybase. У Информикса наоборот, часть вещей от Illustra и Postgres.
Попытался найти картинку с "взаимоотношениями" баз, но за 2 минуты не нашел.
...
Рейтинг: 0 / 0
03.09.2018, 18:01
    #39697321
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
В информиксе тоже работает:
Код: sql
1.
SELECT 1, * FROM "informix".systables WHERE tabid = 1
...
Рейтинг: 0 / 0
03.09.2018, 18:42
    #39697344
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
Код: plaintext
1.
2.
3.
sqlite> create table t (i integer);
sqlite> insert into t(i) values(0);
sqlite> select 1, * from t;
1|0
...
Рейтинг: 0 / 0
03.09.2018, 19:05
    #39697358
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с подзапросом и *
d7iSyBase SQL Anywhere 5.5 (SQL-92):
select 1,* from country
работает без каких-либо предупреждений...

Даже такое вот работает:

select 1 as dip,*,(select name from department where id=dip)
from country
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрос с подзапросом и * / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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