2014-09-09 2 views
-1
select SUM(pass_count) ,SUM(fail_count),SUM(blocked_count),SUM(no_run_count) 
from TAble1(nolock) table1 
where owasp_id = (1,2,3,4,5,8) 
inner join 
Table 2 table2 
on 
TAble1.build_detail_id = table2.build_detail_id 
where 
TAble1.build_detail_id in(
select top 6 bdt.build_detail_id from table3 bdt order by 1 desc) 
and table1.test_run_id=1 

Я получаю синтаксическую ошибку, и я хотел бы получить сумму passcount, не в состоянии подсчитать, где owasp_id = 1,2,3,4,5,8 и сделать внутреннее соединение с таблицу 2 для подробного описания детали. Может ли кто-нибудь помочь в этом?Где положение и внутреннее соединение синтаксиса запроса

+0

База данных содержит отличную документацию, которая описывает правильный синтаксис и использование ключевых слов. Почему бы не использовать его? – jpw

ответ

1

Есть три ошибки синтаксиса, первые два брейки запрос, третья сильная рекомендация:

  1. WHERE должен прийти после FROM и любых JOIN положений.
  2. owasp_id = (1,2,3,4,5,8) должен быть owasp_id IN (1,2,3,4,5,8), поскольку вы поставляете несколько значений.
  3. Оставляя WITH для настольных подсказок (NOLOCK) устарел и его следует избегать.

Так что запрос должен, вероятно, выглядеть следующим образом:

select SUM(pass_count) ,SUM(fail_count),SUM(blocked_count),SUM(no_run_count) 
from Table1 WITH (nolock) table1 
inner join Table2 table2 on TAble1.build_detail_id = table2.build_detail_id 
where owasp_id IN (1,2,3,4,5,8) 
AND Table1.build_detail_id in(
    select top 6 bdt.build_detail_id from table3 bdt order by 1 desc) 
and table1.test_run_id=1 

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

Смежные вопросы