Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обозначение пустоты в поле в SQL-запросе [D6, IB7.1]


Страницы:   1 2

GIL ©   (2004-04-28 12:46:00) 

нужно создать запрос приблизительно такого содержания:
select * from main where age=null
как правильно его написать?


HSolo   (2004-04-28 14:19:00) [1]

Уточняю Deniz ©   (28.04.04 13:43) [23] : имена полей могут быть чуть-чуть не те, что в таблицах :) Кстати, такое возможно и при явном указании полей, если их имена повторяются и не указаны псевдонимы:
select manager.id, contacts.id ...
вернется что-то типа: id, id1 ...


Deniz   (2004-04-28 13:43:00) [2]

> GIL ©   (28.04.04 13:27) [20]
будет ли этот запрос работать?

Конечно! Только, как уже говорили, может выдавать не то что ты хочешь увидеть ;-)
Вместо * проставь все поля которые хочешь видеть в результате, а иначе могут быть колизии неприятные.


GIL   (2004-04-28 13:38:00) [3]

спасибо


HSolo   (2004-04-28 13:35:00) [4]

Будет


GIL   (2004-04-28 13:27:00) [5]

ага и еще вопрос, извините, что не все сразу, но с проблемами надо разбираться постепенно.

select * from users
left join manager on (users.manager_id = manager.id)
left join contacts on (manager.id_contacts=contacts.id)

будет ли этот запрос работать? извините, что задаю такой вопрос, но у меня просто нет записей в таблице.


GIL   (2004-04-28 13:18:00) [6]

да, спасибо!! Всегда плохо понимал как работать с join'ом


Johnmen   (2004-04-28 13:15:00) [7]

>Reindeer Moss Eater ©   (28.04.04 13:09) [13]

Вот ты о чём... Ну да...

Хотя его проблема в другом.


Deniz   (2004-04-28 13:15:00) [8]

select *
from users
 left join manager on (users.manager_id = manager.id)


Reindeer Moss Eater   (2004-04-28 13:15:00) [9]

Если должна, то она есть.


GIL   (2004-04-28 13:13:00) [10]

ну правильно, по первому условию результат пустой, но по второму-то условию должна быть запись!?


GIL   (2004-04-28 13:11:00) [11]

вот такой запрос выводит то, что надо
select * from users where (manager_id is null)


Reindeer Moss Eater   (2004-04-28 13:09:00) [12]

Johnmen ©
Не думаю:

запрос неправильный, т.к. в юзерах есть одна запись, которая не связана с манагерами, и в манагерах пусто, IBExpert показывает null в поле связи в таблице юзеров

Он сравнивает два поля (не поле с константой NULL)
Но в одном поле содержится NULL.


Johnmen   (2004-04-28 13:07:00) [13]

>Reindeer Moss Eater ©   (28.04.04 13:04) [10]
>Я же говорил, что NULL сравнивать с другим полем - всегда будет
>False. Даже с нулом нул сравнить - будет False.

Он же убрал сравнение = и сравнивает is
:)


Johnmen   (2004-04-28 13:05:00) [14]

>хотя по идее первый запрос должен выводить все возможные
>комбинации из записей первой и второй таблицы 8(

Вижу, что понимаешь. Теперь наложи (:)) на это WHERE.


Reindeer Moss Eater   (2004-04-28 13:04:00) [15]

запрос неправильный

Он неправильный потому что его условие возвращает не то, что ты хочешь получить.
Я же говорил, что NULL сравнивать с другим полем - всегда будет False. Даже с нулом нул сравнить - будет False.
Вот и нет таких записей в выборке

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


Johnmen   (2004-04-28 13:04:00) [16]

>как правильно будет выглядеть следующий запрос

А у тебя есть представление о том, как вообще получается выборка ? Что получим, если просто SELECT * FROM A, B ? И как на это повлияет условие WHERE ?


GIL   (2004-04-28 13:03:00) [17]

и даже такой запрос ничего не выводит: select * from users,manager
а выводит такой: select * from users
хотя по идее первый запрос должен выводить все возможные комбинации из записей первой и второй таблицы 8(


GIL   (2004-04-28 12:59:00) [18]

запрос неправильный, т.к. в юзерах есть одна запись, которая не связана с манагерами, и в манагерах пусто, IBExpert показывает null в поле связи в таблице юзеров


Reindeer Moss Eater   (2004-04-28 12:56:00) [19]

Запрос выглядит правильно, если у сервера к нему нет претензий.
Если сервер не возвращает записи, это не значит что запрос "неправильный".
Это значит нет записей удовлетворяющих запросу


Reindeer Moss Eater   (2004-04-28 12:55:00) [20]

Потому что любое сравнение с NULL дает FALSE.

1 = NULL => False
1 <> NULL => False


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо