Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Invalid object name  [new]
malovar
Member

Откуда:
Сообщений: 6
Издравствуйте, Уважаемые.
Вы уж извините за дурацкий вопрос, но все же.
При выполнении
select 
card.full_name, card.socnumber, tabl.summa, curstation
from (select pid, sum(summa) as summa from lic where 
lic.cmonth between cm and cmm
and  lic.code_pay=419
and lic.id_firm=@@8 
group by pid) tabl,
card _hintbrowser
JOIN people _hintbrowser ON Card.auto_card = People.auto_card
JOIN tabl _hintbrowser ON People.pid = tabl.pid
group by card.full_nane
;


возникает сообщение Invalid object name 'tabl'.

Чтото я не очень понимаю почему объект не валидный.

Заранее спасибо за помощь.
25 сен 13, 15:16    [14883083]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
потому что используйте единообразный синтаксис обьединения таблиц, а не смешанный. Сдесь
JOIN tabl _hintbrowser ON People.pid = tabl.pid
ваш tabl не виден. Если что
 ,card _hintbrowser
это cross join card _hintbrowser
25 сен 13, 15:21    [14883114]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Гость333
Member

Откуда:
Сообщений: 3683
malovar
card _hintbrowser
JOIN people _hintbrowser

Две таблицы в запросе имеют одинаковый алиас _hintbrowser?
25 сен 13, 15:23    [14883126]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
malovar
Member

Откуда:
Сообщений: 6
Гость333
malovar
card _hintbrowser
JOIN people _hintbrowser

Две таблицы в запросе имеют одинаковый алиас _hintbrowser?


Дело точно не в этом, ибо _hintbrowser - это служебная переменная для управления режимом работы. Поленился вычищать.

Про единообразный синтаксис. Если я правильно понял, то предложенное лекарство выглядит так:
select
card.full_name, card.socnumber, tabl.summa, curstation
from (select pid, sum(summa) as summa from lic where 
lic.cmonth between cm and cmm
and  lic.code_pay=419
and lic.id_firm=@@8 
group by pid) tabl
cross join card _hintbrowser
JOIN people _hintbrowser ON Card.auto_card = People.auto_card
JOIN tabl _hintbrowser ON People.pid = tabl.pid
group by card.full_nane


Но от этого результат не изменился.
25 сен 13, 15:40    [14883269]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Glory
Member

Откуда:
Сообщений: 104751
malovar
Но от этого результат не изменился.

Еще бы. Два набора имеют одинаковое имя tabl
25 сен 13, 15:42    [14883290]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
malovar
Member

Откуда:
Сообщений: 6
Glory
malovar
Но от этого результат не изменился.

Еще бы. Два набора имеют одинаковое имя tabl


А почему 2, когда 1? Таблица tabl - это результат select и только.
Возможно я что-то нарушил в логике, но по другому как-то в голову не пришло.
25 сен 13, 15:45    [14883310]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Гость333
Member

Откуда:
Сообщений: 3683
malovar
Glory
пропущено...

Еще бы. Два набора имеют одинаковое имя tabl


А почему 2, когда 1? Таблица tabl - это результат select и только.

Если так, то используйте common table expression.
25 сен 13, 15:47    [14883327]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Glory
Member

Откуда:
Сообщений: 104751
select
card.full_name, card.socnumber, tabl.summa, curstation
from (select pid, sum(summa) as summa from lic where
lic.cmonth between cm and cmm
and lic.code_pay=419
and lic.id_firm=@@8
group by pid) tabl
cross join card
JOIN people ON Card.auto_card = People.auto_card
JOIN tabl ON People.pid = tabl.pid
group by card.full_nane
Или второй join у вас для того подзапроса что ли ? Тогда зачем вы выдумываете синтаксис ?
25 сен 13, 15:47    [14883333]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Glory
Member

Откуда:
Сообщений: 104751
select
card.full_name, card.socnumber, tabl.summa, curstation
from (select pid, sum(summa) as summa from lic where
lic.cmonth between cm and cmm
and lic.code_pay=419
and lic.id_firm=@@8
group by pid) tabl
JOIN people ON People.pid = tabl.pid
join card ON Card.auto_card = People.auto_card
group by card.full_nane
25 сен 13, 15:48    [14883339]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Glory
malovar
Но от этого результат не изменился.

Еще бы. Два набора имеют одинаковое имя tabl

точно.
JOIN tabl _hintbrowser ON People.pid = tabl.pid
так нельзя.

можно
;with tabl as(
select pid, sum(summa) as summa from lic where 
lic.cmonth between cm and cmm
and  lic.code_pay=419
and lic.id_firm=@@8 
group by pid
)
select ...
from tabl
....
inner join tabl
on ...
 
25 сен 13, 15:49    [14883345]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
malovar
Member

Откуда:
Сообщений: 6
Glory
Или второй join у вас для того подзапроса что ли ? Тогда зачем вы выдумываете синтаксис ?


Ну если синтаксис не выдумывать, то проблема перемещается на full_name.
25 сен 13, 15:54    [14883374]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Glory
Member

Откуда:
Сообщений: 104751
malovar
Ну если синтаксис не выдумывать, то проблема перемещается на full_name.

Синтаксис надо изучать. По хелпу.
Выдумывать синтаксис вы сможете, когда будете создавать свой сервер ... с преферансом и поэтессами.
25 сен 13, 15:56    [14883390]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Гость333
Member

Откуда:
Сообщений: 3683
malovar
проблема перемещается на full_name.

Ну ещё бы.
select
card.full_name
...
group by card.full_nane

Без форума-то это никак не найти.
25 сен 13, 15:58    [14883412]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Гость333
malovar
проблема перемещается на full_name.

Ну ещё бы.
select
card.full_name
...
group by card.full_nane

Без форума-то это никак не найти.

с таким подходом человек должен переводить часть своей зарплаты отвечающему.
25 сен 13, 16:02    [14883446]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Это что, тест на знание SQL?
Отформатированный запрос (спасибо SSMSBoost) выглядит так:
SELECT card.full_name, card.socnumber, tabl.summa, curstation
FROM (
	SELECT pid, sum(summa) AS summa
	FROM lic
	WHERE lic.cmonth BETWEEN cm AND cmm AND lic.code_pay = 419 AND lic.id_firm = @@8
	GROUP BY pid
	) tabl, 
   card _hintbrowser
JOIN people _hintbrowser ON Card.auto_card = People.auto_card
JOIN tabl _hintbrowser ON People.pid = tabl.pid
GROUP BY card.full_nane;
25 сен 13, 16:02    [14883447]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
malovar
Member

Откуда:
Сообщений: 6
Гость333
malovar
проблема перемещается на full_name.

Ну ещё бы.
select
card.full_name
...
group by card.full_nane

Без форума-то это никак не найти.


Вы мне конечно можете не поверить, но я сам бы никада бы не нашел!
25 сен 13, 16:06    [14883473]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Cygapb-007,

ага.. угдала все буквы - не смог прочесть слово
25 сен 13, 16:06    [14883474]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
malovar
Member

Откуда:
Сообщений: 6
Я, конечно, могу оценить в материально вещественной форме ответ, но пока единственными стоящими ответами были ответы Хенки. Так что webmoney руб в студию.

Хотя и они не привели меня к нужному результату.
25 сен 13, 16:24    [14883577]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Glory
Member

Откуда:
Сообщений: 104751
malovar
но пока единственными стоящими ответами были ответы Хенки.

Вы хотите сказать, что в сообщении сервера на было указано на ошибочное имя full_nane ?
25 сен 13, 16:28    [14883587]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
malovar
Я, конечно, могу оценить в материально вещественной форме ответ, но пока единственными стоящими ответами были ответы Хенки. Так что webmoney руб в студию.

Хотя и они не привели меня к нужному результату.
Можно предположить, что имелось в виду
SELECT card.full_name, card.socnumber, tabl.summa, curstation
FROM (
	SELECT pid, sum(summa) AS summa
	FROM lic
	WHERE lic.cmonth BETWEEN cm AND cmm AND lic.code_pay = 419 AND lic.id_firm = 228 -- @@8
	GROUP BY pid
	) tabl
JOIN people ON People.pid = tabl.pid
JOIN card ON Card.auto_card = People.auto_card 
ORDER BY card.full_name;
25 сен 13, 16:30    [14883608]     Ответить | Цитировать Сообщить модератору
 Re: Invalid object name  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
malovar,

По порядку
у вас сначала croos join с таблицей card ,а патом у вас inner join People с таблицей card с котрой перед етим сделан кросс. Вы точно уверенны что так надо ?????
Далее если хотите использовать результат своего запроса под псевдонимом tab ,ето оформите его в cte , НО

;with tabl as (
	SELECT pid, sum(summa) AS summa
	FROM lic
	WHERE lic.cmonth BETWEEN cm AND cmm  -- что ето за поля\переменные ?
                  AND lic.code_pay = 419 
                  AND lic.id_firm = @@8
	GROUP BY pid

)


Делее используй те как вам показали
;with tabl as (
	SELECT pid, sum(summa) AS summa
	FROM lic
	WHERE lic.cmonth BETWEEN cm AND cmm  -- что ето за поля\переменные ?
                  AND lic.code_pay = 419 
                  AND lic.id_firm = @@8
	GROUP BY pid

)
select ......
from tabl t
  crosss join card с-- надеюсь кард ето таблица
  JOIN people P ON c.auto_card = P.auto_card and P.pid = t.pid
 -- дополнительного джойна не нужно ,ето просто условие обединения для таблицы People  P.pid = t.pid
GROUP BY c.full_nane --гроуп бай после кросса - интересная практика

Далее в вашем запросе половина таблиц имеют одинаковые алиасы которые потом не используються
В наконец
Если вы таки расскажите что в итоге хотите получить из вашего мега пупер запроса -то всем станет проще отвечать
25 сен 13, 16:36    [14883639]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить