Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
NatashaM Member Откуда: Санкт-Петербург Сообщений: 16 |
Создаю 2 таблицы:select CUSTOMER into mas_22 from Sale where DATE = '20130822' select CUSTOMER into mas_23 from Sale where DATE = '20130823' В которые заносятся данные за определенные числа. Затем,на основании этих таблиц делаю запрос: select * from mas_22 a LEFT JOIN mas_23 b on a.customer=b.customer where mas_22.Customer is not null Эта строчка не верна, но надо, чтобы не было null значений. WHERE mas_22.Customer IS NOT NULL Когда пишу эту строчку,появляется ошибка "The multi-part identifier "mas_23.Customer" could not be bound." // Null значения только в mas_23 // Текст ошибки я и сама перевести могу. Мне причина не понятна. |
28 авг 13, 06:19 [14763602] Ответить | Цитировать Сообщить модератору |
tpg Member Откуда: Novosibirsk Сообщений: 23902 |
Запросselect CUSTOMER from Sale where DATE = '20130822' and CUSTOMER is nullчто-нибудь вернет? Сообщение было отредактировано: 28 авг 13, 06:50 |
28 авг 13, 06:50 [14763619] Ответить | Цитировать Сообщить модератору |
Guf Member Откуда: Новосибирск Сообщений: 658 |
Как-то все намешано... Если вы указали алиас для таблицы, то будте любезны обращаться к ней именно по этому алиасу. А что бы не пришлось писать условия "is not null" изучите какие бывают соединения и используйте нужное (inner) А еще лучше не создавать 2 постоянные таблицы для такого запроса а просто соединить таблицу саму с собой |
||
28 авг 13, 06:53 [14763620] Ответить | Цитировать Сообщить модератору |
NatashaM Member Откуда: Санкт-Петербург Сообщений: 16 |
tpg,возвращает только заголовок поля. Записей нет. |
28 авг 13, 09:09 [14763846] Ответить | Цитировать Сообщить модератору |
NatashaM Member Откуда: Санкт-Петербург Сообщений: 16 |
Guf, вот оно! Решение)) Спасибо) А почему так? TSQL в этом плане так принципиален? |
28 авг 13, 09:10 [14763853] Ответить | Цитировать Сообщить модератору |
Сергей Викт. Member Откуда: Москва Сообщений: 888 |
Доброе утро. create table t11 (id int) create table t22 (id int) insert t11 select 1 union select 2 union select 3 insert t22 select 1 union select 3 select * from t11 t join t22 tt ON t.id=tt.id --алиасы не совпадают с названиями таблиц select * from t11 t join t22 t11 ON t.id=t11.id /*тут алиас для второй таблицы является именем первой, но т.к. для первой есть алиас t11, то соответственно мы можем использовать её имя в качестве алиаса для другой таблицы*/ select * from t11 join t22 t11 ON t11.id=t11.id /* А здесь мы получим ошибку: Msg 1012, Level 16, State 1, Line 17 The correlation name 't11' has the same exposed name as table 't11'. */ drop table t11 drop table t22 Потому что если вы используете алиас, то фактически на время выполнения запроса фактическое имя таблицы вы можете использовать для другого алиаса. |
||
28 авг 13, 09:18 [14763879] Ответить | Цитировать Сообщить модератору |
Ruuu Member Откуда: Иркутск Сообщений: 4272 |
|
||||
28 авг 13, 09:34 [14763947] Ответить | Цитировать Сообщить модератору |
NatashaM Member Откуда: Санкт-Петербург Сообщений: 16 |
Сергей Викт., спасибо за разъяснение!) |
28 авг 13, 09:57 [14764036] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
А по каким признакам вы определили, что первоначальный запрос эквивалентен запросу с inner join? |
||
28 авг 13, 11:27 [14764840] Ответить | Цитировать Сообщить модератору |
Guf Member Откуда: Новосибирск Сообщений: 658 |
Посмотрел в свой хрустальный шар! ![]() И я не говорил, что они эквивалентны. Я предположил что ТС нужен именно inner, потому что ТС путается в показаниях.
Вряд ли 22-ого были продажи без покупателей. Значит НаташаМ ошиблась в условии where, когда постила сообшение. Это подтверждают и сообщение об ошибке. И так как она говорит о "Null значения только в mas_23", то скорее всего она имет ввиду, что после левого внешнего соединения у неё появляются нулы в правой части рекордсета, от которых она желает избавиться. Вот я подумал, что НаташеМ нужны такие заказчики, которые покупали и 22-ого и 23-его числа. А это inner... вот и всё |
||||
28 авг 13, 11:57 [14765059] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |