Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Вниз

В каких случаях...   Найти похожие ветки 

 
Cyrax ©   (2009-06-15 19:30) [0]

...запрос select * from table where id = id вернёт не всё содержимое таблицы ?

"Не всё содержимое таблицы" - это, я понимаю, либо не все строки (отвечает условие), либо не все столбцы (отвечает звёздочка).


 
palva ©   (2009-06-15 19:34) [1]

Да, не всё.


 
Игорь Шевченко ©   (2009-06-15 19:36) [2]

интересен вопрос, в каких случаях вернется все...


 
palva ©   (2009-06-15 19:36) [3]

Ах да, в каких случаях... Ну, когда в некоторых строках id равно NULL, эти строки не вернет.


 
12 ©   (2009-06-15 19:37) [4]

id is null


 
DVM ©   (2009-06-15 19:38) [5]


> В каких случаях...
>
> Cyrax ©   (15.06.09 19:30)
>
> ...запрос select * from table where id = id вернёт не всё
> содержимое таблицы ?

когда поля id там не будет он ничего не вернет (тоже в своем роде "не все")


 
12 ©   (2009-06-15 19:39) [6]

2 palva
обогнал :)
но, поправка, - id is NULL :)


 
Сергей М. ©   (2009-06-15 19:39) [7]


> либо не все столбцы (отвечает звёздочка).


Если "звездочка" вернет не все столбцы, я пойду мылить веревку.
А как иначе, если все во что верил обратилось в прах ?)


 
Cyrax ©   (2009-06-15 19:51) [8]


> Если "звездочка" вернет не все столбцы, я пойду мылить веревку.

Так всякое бывает в конкретных реализациях...


 
Cyrax ©   (2009-06-15 20:01) [9]

Я тоже подумал про NULL, только мне показалось, что это зависит от реализации SQL.


 
Anatoly Podgoretsky ©   (2009-06-15 20:12) [10]

> Cyrax  (15.06.2009 19:51:08)  [8]

Так это П и это не лечится.


 
sniknik ©   (2009-06-15 20:27) [11]

> Если "звездочка" вернет не все столбцы, я пойду мылить веревку.
блин, боюсь сейчас стану убийцей но из песни слов не выкинешь...
проверь запрос через jet к таблице парадокса содержащему поле/я типа graphic.

> что это зависит от реализации SQL.
и от настроек. в mssql например можно задать режим когда NULL = NULL будет true, а не не определено как обычно.


 
oldman ©   (2009-06-15 20:39) [12]


> В каких случаях...
> ...запрос select * from table where id = id вернёт не всё
> содержимое таблицы ?


А вот не надо составлять такой запрос. На фига тебе по запросу получать ВСЕ содержимое таблицы?
:)))


 
Cyrax ©   (2009-06-15 20:49) [13]

А может мне надо получить НЕ ВСЕ содержимое таблицы...


 
AndreyV ©   (2009-06-15 20:53) [14]

> [13] Cyrax ©   (15.06.09 20:49)
> А может мне надо получить НЕ ВСЕ содержимое таблицы...

Приехали.


 
blackman ©   (2009-06-15 21:02) [15]

Ромашка какая-то :)


 
Petr V. Abramov ©   (2009-06-15 21:42) [16]

вопрос на собеседовании чела, который в резюме написал "знаю все СУБД, какие есть".


 
Cyrax ©   (2009-06-15 22:07) [17]

Насчёт собеседования -да, действительно, это из собеседования.
Так это вы его "собеседовали" ?
Он ответил ?


 
Игорь Шевченко ©   (2009-06-15 22:13) [18]


> Насчёт собеседования -да, действительно, это из собеседования.


провалил


 
Cyrax ©   (2009-06-15 22:19) [19]

Так он у вас собеседование проходил ?
Вы все что - в одной конторе ?

з.ы. А про вопрос я узнал со слов чела, который ваше собеседование не провалил. Говорил, что половина на этом вопросе отсеялась.


 
Ega23 from home   (2009-06-15 22:45) [20]

Если собеседование - то на 99% вопрос про NULL.

Насчёт звёздочки. Проверить сейчас возможности нет (нету СУБД никакой). Но, как мне кажется, это может быть вьюха с объединением двух таблиц, в каждой из которых есть поле id. Т.е. 2 ColumnName = "id"
В этом случае будет непонятно, какой id какому равен


 
Игорь Шевченко ©   (2009-06-15 22:54) [21]


> Но, как мне кажется, это может быть вьюха с объединением
> двух таблиц, в каждой из которых есть поле id. Т.е. 2 ColumnName
> = "id"


не может быть такой вьюхи


 
Cyrax ©   (2009-06-15 23:42) [22]


> В этом случае будет непонятно, какой id какому равен

В таких случаях запросы не выполняются - вылетает ошибка.
Соответственно, речи о возврате не всех записей быть не может.


 
Ega23 from home   (2009-06-16 00:25) [23]


> не может быть такой вьюхи


Я во вьюхах не силён, но мне кажется от СУБД зависит.
Ещё раз повторюсь: проверить сейчас не могу. Завтра для MSSQL посмотрю.


 
Игорь Шевченко ©   (2009-06-16 00:50) [24]

Ega23 from home   (16.06.09 00:25) [23]

А подумать, не смотря ?


 
Ega23 ©   (2009-06-16 08:08) [25]


> А подумать, не смотря ?


А что подумать?
Для MSSQL:

Create table #t1 (id int, t1fld varchar(10));
Create table #t2 (id int, t2fld varchar(10));

insert into #t1 (id, t1fld) values (1, "aaa");
insert into #t1 (id, t1fld) values (2, "bbb");

insert into #t2 (id, t2fld) values (1, "ccc");
insert into #t2 (id, t2fld) values (2, "ddd");

Select * from #t1, #t2 where #t1.id=#t2.id

Drop table #t1;
Drop table #t2;


Результат:

id          t1fld      id          t2fld
----------- ---------- ----------- ----------
1           aaa        1           ccc
2           bbb        2           ddd

(2 row(s) affected)


Если такое проходит с обычным завпросом, то не вижу причин, почему не должно пройти с вьюхой (сейчас попробую).


 
Ega23 ©   (2009-06-16 08:14) [26]

Проверил с вьюхой. Тут действительно сервер при создании не пропустил:
Msg 4506, Level 16, State 1, Procedure TestView, Line 3
Имена столбцов в каждом представлении или функции должны быть уникальными. Имя столбца "id" в представлении или функции "TestView" указано несколько раз.


Но с просто селектом - проходит. Возможно, на какой-нибудь конкретной СУБД также пройдёт.


 
test ©   (2009-06-16 08:28) [27]

Ega23 ©   (16.06.09 08:08) [25]

Select
#t1.id as t1id, t1fld, #t2.id as  t2id, t2fld
into #temp
from #t1, #t2
where isnull(#t1.id,0)=isnull(#t2.id,0)

зы
в MsSQL join рулит


 
Ega23 ©   (2009-06-16 08:30) [28]


> test ©   (16.06.09 08:28) [27]


Это к чему было?


 
test ©   (2009-06-16 08:59) [29]

Ega23 ©   (16.06.09 08:30) [28]
Твой код запрос из двух таблиц, результат во временную таблицу. Проблема только в том что он null перемножит.(Количество null первой таблицы * количество null второй таблицы)


 
Ega23 ©   (2009-06-16 09:03) [30]


> Твой код запрос из двух таблиц, результат во временную таблицу.
>  Проблема только в том что он null перемножит.(Количество
> null первой таблицы * количество null второй таблицы)


А, в этом плане. Не, я тут продемонстрировал принципиальную возможность получения RecordSet с двумя одинаковыми ColumnName.


 
antonn ©   (2009-06-16 09:09) [31]


> А вот не надо составлять такой запрос. На фига тебе по запросу
> получать ВСЕ содержимое таблицы?
> :)))
>

скорее всего потому что ему нужно ВСЕ столбцы таблицы %)


 
Ega23 ©   (2009-06-16 09:10) [32]


> скорее всего потому что ему нужно ВСЕ столбцы таблицы %)


Select * from Table where 0=1


 
antonn ©   (2009-06-16 09:13) [33]


> Ega23 ©   (16.06.09 09:10) [32]

я не про строки :)


 
Ega23 ©   (2009-06-16 09:16) [34]


> я не про строки :)


И я не про строки. Ты получишь пустой рекордсет, но со всеми столбцами и их метаданными.


 
Игорь Шевченко ©   (2009-06-16 11:16) [35]


> Возможно, на какой-нибудь конкретной СУБД также пройдёт


А еще подумать ?


 
Ega23 ©   (2009-06-16 11:18) [36]


> А еще подумать ?


А фигли "ещё думать", я почем знаю, как в "какой-нибудь конкретной СУБД" запись в INFORMATION_SCHEMA реализовано?


 
Игорь Шевченко ©   (2009-06-16 11:25) [37]

Ega23 ©   (16.06.09 11:18) [36]


> А фигли "ещё думать",


Ты можешь создать таблицу с двумя одинаковыми названиями полей (допустим, в "любой СУБД") ?

А почему ?


 
Ega23 ©   (2009-06-16 11:36) [38]


> Ты можешь создать таблицу с двумя одинаковыми названиями
> полей (допустим, в "любой СУБД") ?


А View - это не таблица, вообще-то. Хоть и ведёт себя как таблица.


 
test ©   (2009-06-16 11:42) [39]

Ega23 ©   (16.06.09 11:36) [38]
Все равно дубли вывести она не выведет, дублям надо псевдоним присваевать.


 
Кщд   (2009-06-16 11:42) [40]

>Ega23 ©   (16.06.09 11:36) [38]
>А View - это не таблица, вообще-то. Хоть и ведёт себя как таблица.
допустим, создана view с двумя одноименными полями(т.е. полностью идентичными), например, id
как бы теперь в sql использовать эти поля?


 
brother ©   (2009-06-16 11:43) [41]

> например, id

обычно он уникален


 
Игорь Шевченко ©   (2009-06-16 11:52) [42]

Ega23 ©   (16.06.09 11:36) [38]


> А View - это не таблица, вообще-то.


не таблица она только тем, что не хранит данные. Если ты не можешь создать таблицу с двумя одинаковыми названиями полей, то почему должна быть возможность создать view ?

Имя поля вместе с именем таблицы(view,процедурой) задает источник данных. Если есть одинаковые поля, какой источник использовать ?


 
Ega23 ©   (2009-06-16 11:57) [43]

Коллеги, я чего-то не пойму - вы мне чего объяснить-то хотите?
То что в таблицу нельзя два одинаковых по имени поля прописать? Так это я в курсе.
То, что даже если и можно, то будет бессмысленно, т.к. неясно, когда к комуобращаться? Так и это я в курсе.
Но в [25] был вполне конкретный пример получения рекордсета с двумя одинаковыми столбцами.

При этом, если селект из [25] немного переделать, то тоже exception будет:


Select * from
 (
   Select * from #t1, #t2 where #t1.id=#t2.id
 ) as A

Msg 8156, Level 16, State 1, Line 11
Столбец "id" для "A" указан более одного раза.



 
Игорь Шевченко ©   (2009-06-16 12:02) [44]

Ega23 ©   (16.06.09 11:57) [43]


> Но в [25] был вполне конкретный пример получения рекордсета
> с двумя одинаковыми столбцами.


рекордсет - это не view


 
sniknik ©   (2009-06-16 12:10) [45]

> Столбец "id" для "A" указан более одного раза.
это где так получается? я сколько не пробую все натыкаюсь на -
The column "id" was specified multiple times for "A"


 
KSergey ©   (2009-06-16 12:25) [46]

> Ega23 ©   (16.06.09 11:57) [43]
> Коллеги, я чего-то не пойму - вы мне чего объяснить-то хотите?

Что не может быть реализации SQL-сервера, в которой можно было бы создать view, возвращающую колонки с идентичными именами. Т.е. утверждение (вопрос)

> Ega23 ©   (16.06.09 08:14) [26]
> Возможно, на какой-нибудь конкретной СУБД также пройдёт.

всегда равно FALSE.


 
Кщд   (2009-06-16 12:45) [47]


> brother ©   (16.06.09 11:43) [41]
> обычно он уникален

насчет обычно - это весьма спорно - например, для систем с версионированием, построенным на одной таблице
насчет уникальности, то, собственно, кто мешает:
create view vw_crazy_view as select t.id, t2.id from t, t2
в таблицах t, t2 - id, соответственно, уникален


 
Ega23 ©   (2009-06-16 12:54) [48]


> sniknik ©   (16.06.09 12:10) [45]
>
> > Столбец "id" для "A" указан более одного раза.
> это где так получается? я сколько не пробую все натыкаюсь
> на -
> The column "id" was specified multiple times for "A"


Надо было SQLEXPR_RUS.EXE качать.  :)))


 
Cyrax ©   (2009-06-16 17:14) [49]


> вопрос на собеседовании чела, который в резюме написал "знаю
> все СУБД, какие есть".

А это не тот ли, который декомпиляторы для ЯВУ пишет ???
Обычно такие простые вопросы осилить не могут - это всё-равно что homo sapiens до уровня мартышки опуститься...


 
Anatoly Podgoretsky ©   (2009-06-16 20:52) [50]

> Ega23  (16.06.2009 11:36:38)  [38]

View это виртуальная таблица.


 
Cyrax ©   (2009-06-16 21:26) [51]


> View это виртуальная таблица.

В терминах БД это не Таблица, а Представление. А в вопросе используется как раз терминология БД.


 
Anatoly Podgoretsky ©   (2009-06-16 21:35) [52]

Представление это виртуальная таблица.
Потому и виртуальная, что не реальная, а только видимость.


 
Игорь Шевченко ©   (2009-06-16 21:37) [53]

"- Ствол сделан из высоколегированной стали.
- Неверно.
- Почему ?
- Потому что написано "ствол сделан из того же материала"
"
(с) известный анекдот


 
Павел Калугин ©   (2009-06-16 21:41) [54]

А потому что этот диплом никто читать не будет - сделаем ствол из льда
Игорь, зачем на собеседовании задавать вопросы. которые перевернут пол форума?


 
Игорь Шевченко ©   (2009-06-16 21:47) [55]

Павел Калугин ©   (16.06.09 21:41) [54]

"Если вопросы задаются, значит, кому-то это нужно"


 
Cyrax ©   (2009-06-16 22:36) [56]

>Представление это виртуальная таблица.
Не спроста ведь её обозвали Представлением. При этом официальных синонимов не оставили. Стало быть, если Таблица, значит, Таблица. Имхо.


 
Anatoly Podgoretsky ©   (2009-06-17 00:47) [57]

> Cyrax  (16.06.2009 22:36:56)  [56]

Потому что только представляет реальные таблицы.


 
Кщд   (2009-06-17 07:47) [58]


> Cyrax ©   (16.06.09 22:36) [56]
> Не спроста ведь её обозвали Представлением. При этом официальных
> синонимов не оставили. Стало быть, если Таблица, значит,
>  Таблица. Имхо.

из-за чего весь "сыр-бор"?
человек не ответил на элементарный вопрос по SQL на собеседовании
это достойно столь бурной полемики на тему "является ли лошадь Пржвальского лошадью"?


 
pasha_golub ©   (2009-06-17 09:37) [59]

Если системные колонки считать частью "содержимого таблицы", то их тоже не вернет, например, в Постгресе.

То есть для получения всех системных надо будет писануть:

SELECT oid, tableoid, xmin, xmax, cmin, cmax, ctid, * FROM table


 
pasha_golub ©   (2009-06-17 09:39) [60]

Кстати, некоторые писаки "от сохи" используют системные колонки в качестве PK в Постгресе, за что я бы отрывал руки.


 
Ega23 ©   (2009-06-17 10:06) [61]


> Кстати, некоторые писаки "от сохи" используют системные
> колонки в качестве PK в Постгресе, за что я бы отрывал руки.


+ сто тыщ мильёнов.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.61 MB
Время: 0.02 c
15-1244884195
Kerk
2009-06-13 13:09
2009.08.16
Как переводится chode?


2-1245404768
Андрэээ
2009-06-19 13:46
2009.08.16
FileStream


15-1245393982
alien1769
2009-06-19 10:46
2009.08.16
Ведение арматурных карточек


2-1245127638
dumka
2009-06-16 08:47
2009.08.16
Запросы


15-1245117148
brother
2009-06-16 05:52
2009.08.16
функция Exel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский