Странное выполнение SQL запроса
а кто-то пытался PostgreSQL противопоставить MS SQL Server-у
а Net provider к PotgreSQL это вообще пиздец. Кто-то говорил, что из-за open source программеры не пишут явной фигни. Посмотрев исходники Net provider, я что-то этого не увидел. Написана откровенная лажа, пришлось фиксить самому.
Подробнее опиши запросы и исходные данные. Пока у тебя слишком абстрактный вопрос.
Под postgresql их вообще-то два. Один - npgsql, вроде как "официальный" провайдер от Mono - действительно страшная параша. Второй - pgsqlclient, работает замечательно.
А разве приведенные выражения не явно указывают на баг?
нет. Что тебе кажется странным?
полные запросы выглядят громоздко, к тому же там еще и вьюшки используются
"Помогите мне, у меня там хуйня, только где я вам не скажу, вы сами отгадайте". Так что ли?
как то, что указано между SELECT и FROM, может влиять на количество строк результата? (имхо, я чего то не догоняю?)
как то, что указано между SELECT и FROM, может влиять на количество строк результатаНу во-первых, select distinct x
Во-вторых, group by 1
В-третьих, having
Наверное что-то еще есть, давай уже пиши свой запрос
create table a (a integer);
create table b (b integer);
insert into a values(1);
insert into a values(2);
insert into a values(3);
insert into b values(1);
insert into b values(2);
insert into b values(3);
=> select a.* from a;
a
---
1
2
3
(записей: 3)
=> select a.*, b.* from a;
NOTICE: добавление отсутствующей записи о FROM-выражении для таблицы "b"
a | b
---+---
1 | 1
1 | 2
1 | 3
2 | 1
2 | 2
2 | 3
3 | 1
3 | 2
3 | 3
(записей: 9)
select a.*, b.* from a;
проходит разбор?
group by 1А так можно?
да. при этом вылезает notice, но если ты выполняешь этот запрос через клиента, который notice игнорирует, то ты его вообще никак не заметишь.
V1.*,
V2.*
FROM
V1 INNER JOIN V2 ON V1... = V2...
WHERE V2... = 'test1'
V1 и V2 вьюшки
Этого достаточно? если нужно полный текст, завтра запощу
Post deleted by
выполняю через pgAdmin ни каких предупреждений
не в mssqlВ, бля, умник вылез. Ну при чем тут MSSQL, если тред про Postgres? Фтопку.
в прочем как и group by 1
судя по примеру выше это правильно, меньше глупых ошибок
Удалил, и не надо так нервничать. Сам автор треда с mssql сравнивал, вот я и проверил.
ну блин, хватит придираться, в первом посте не про distinct
Ну во-первых, select distinct x
и что? количество строк будет разное?
Во-вторых, group by 1
В-третьих, havingи что? количество строк будет разное?
же написал пример -- если по C предполагается JOIN и его не сделать, то
будет полное произведение. У а, кстати, очень похоже на то -- 36 на 6 делится.
будет полное произведение. У а, кстати, очень похоже на то -- 36 на 6 делится.
group by 1.Я не знаю насколько это стандартно, в MySQL group by 1 означает "группировать по первому столбцу выдачи". То есть результат будет очень зависеть от того, что написать между select и from
и что? количество строк будет разное?
Я не знаю насколько это стандартно, в MySQL group by 1 означает "группировать по первому столбцу выдачи".это не стандартно, ни в какой стандарт не входит, это одно из убожеств MySQL
же написал пример -- если по C предполагается JOIN и его не сделать, тоты подумал, прежде чем написать?
будет полное произведение. У а, кстати, очень похоже на то -- 36 на 6 делится.
я сталкивался с подобном проблемой при переписывании запроса с MS SQL -> Firebird. Удивился что надо писать group by 1... но люди с sql.ru объяснили что это действительно стандарт ANSI 92...
И еще, как я заметил, глюкавый дот-нет провайдер может извращать sql запросы - в частности некоторые запросы с юнионом при вызове через ado.net давали всякую лажу..
Оставить комментарий
6yrop
Вот такой запросвыдает 36 строк, а такой
выдает 6 строк.
Это явная бага PostgreSQL?