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

Откуда:
Сообщений: 5
Здравствуйте. Написан запрос

	SELECT     TTov.EK, TUnit.NameUnit, TTov.Base
	FROM  (  
	
	         (Select Tov.EK, Tov.Base, Tov.unit_id
			from
		
			(SELECT     EK ,unit_id, Base,  time
		     	 FROM          Tov
	             WHERE      (EK> 0) ) AS Tov
	         
	         INNER JOIN   //(2)  соединяю со всей таблицей чтобы получить "unit_id", "Base"
	         
	         
			  (   SELECT     EK, MAX(time) AS time //   (1) получаю записи с максимальным значением дата, сгруппир. по "EK"
 
				FROM           Tov 
				WHERE      (EK> 0) and time is not null
				group by  EK) AS Tov2
				
	         ON Tov2.EK = Tov.EK and  Tov2.time = Tov.time 
	         
	                ) AS TTov
	   	          
	             LEFT OUTER JOIN //(3) левое соединение чтобы получить NameUnit
	             
	      (  SELECT     unit_id AS un, name AS NameUnit
	         FROM Unit ) AS TUnit 
	         
	            ON TTov.unit_id = TUnit.un	
 


Появляется ошибка: Incorrect syntax near 'un'.
Подскажите, что я делаю не так
8 авг 11, 04:31    [11083579]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
NewProg,

О да , комментарий строк -- , блоков /* */ , а вы в каком стандарте пишите ?
8 авг 11, 06:04    [11083588]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
NewProg
Member

Откуда:
Сообщений: 5
в настоящем запросе их нет. Это я их тут повставлял
8 авг 11, 06:12    [11083590]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
f070214
Member

Откуда:
Сообщений: 35
Попробуйте так:

SELECT	TTov.EK, TUnit.NameUnit, TTov.Base
FROM
  ( select	*
	from
	  ( select Tov.EK, Tov.Base, Tov.unit_id
		from
		  ( SELECT	EK, unit_id, Base,  time
			FROM    Tov
	        WHERE ( EK > 0 ) ) AS Tov
			INNER JOIN
		  ( SELECT	EK, MAX	(time) AS time 
			FROM	Tov 
			WHERE ( EK > 0 )
				and time is not null
			group by EK) AS Tov2 ON Tov2.EK = Tov.EK and Tov2.time = Tov.time ) AS TTov
		LEFT OUTER JOIN
	  (	SELECT	unit_id AS un, name AS NameUnit
		FROM	Unit ) AS TUnit ON TTov.unit_id = TUnit.un )
8 авг 11, 08:07    [11083648]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
NewProg
Member

Откуда:
Сообщений: 5
Нет не помогло. Что - то я не понял в чем фишка?

Select Tov.EK, Tov.Base, Tov.unit_id
поменяли на
select	*

В данном случае это одно и тоже, вроде.
В общем ошибка та же.
8 авг 11, 08:30    [11083680]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
ё
Guest
...что-то такого накрутили...
имхо, это - тоже самое
SELECT     Tov.EK, Unit.name  as NameUnit, Tov.Base
FROM           Tov 
LEFT OUTER JOIN Unit 
  on Tov.unit_id = Unit.unit_id
where time = (select max(time) from Tov a where Tov.EK=a.EK)
  and EK> 0

>> Появляется ошибка: Incorrect syntax near 'un'.

вы не в динамике это делаете ?
если - да, может переменная закончилась ?
8 авг 11, 08:40    [11083698]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
NewProg
Member

Откуда:
Сообщений: 5
ё
вы не в динамике это делаете ?
если - да, может переменная закончилась ?


Без понятия, я вообще с SQL почти не работаю, подключаюсь через ADODB.Connection (оооооооооочень редко) пишу запрос, получаю инфу и дальше её использую
8 авг 11, 09:01    [11083757]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
NewProg
Member

Откуда:
Сообщений: 5
Мне просто интересно, а если использовать именно такую "схему" "через вложенные запросы (1)":

...
    LEFT OUTER JOIN
	             
	      (  SELECT     unit_id AS un, name AS NameUnit       --(1)
	         FROM Unit ) AS TUnit 

Возможно ли добиться правильного результата? Т.е., что фактически не правильно в том, что написал я?
8 авг 11, 09:07    [11083770]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
NewProg
ё
вы не в динамике это делаете ?
если - да, может переменная закончилась ?


Без понятия, я вообще с SQL почти не работаю, подключаюсь через ADODB.Connection (оооооооооочень редко) пишу запрос, получаю инфу и дальше её использую


Прикольно... Т.е. делаете нечто, не понимая, что делаете, или как? Ниже запрос, проверку синтаксиса проходит, что он делает - не разбирался.
 SELECT TTov.EK,
        TUnit.NameUnit,
        TTov.Base
 FROM   ( SELECT    Tov.EK,
                    Tov.Base,
                    Tov.unit_id
          FROM      ( SELECT    EK,
                                unit_id,
                                Base,
                                time
                      FROM      Tov
                      WHERE     ( EK > 0 )
                    ) AS Tov
          INNER JOIN ( SELECT   EK,
                                MAX(time) AS time
                       FROM     Tov
                       WHERE    ( EK > 0 )
                                AND time IS NOT NULL
                       GROUP BY EK
                     ) AS Tov2
          ON        Tov2.EK = Tov.EK
                    AND Tov2.time = Tov.time
        ) AS TTov
 LEFT OUTER JOIN ( SELECT   unit_id AS un,
                            name AS NameUnit
                   FROM     Unit
                 ) AS TUnit
 ON     TTov.unit_id = TUnit.un	
8 авг 11, 09:09    [11083774]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
f070214
Member

Откуда:
Сообщений: 35
Да, быть может чего-то запутал я... Суть в том, что у Вас вроде бы недостает одной закрывающей скобки.
8 авг 11, 09:09    [11083775]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить