我有一个运行大量SQL文件的PHP应用程序。它成功运行所有这些,除了这个返回结果“1”作为对象数组。这个sql有语法问题吗?
set datefirst 1;
select top 10 artistlabel_name
, album_name
, releasedate
, label
, sum(units) total_units
, sum(sales) total_sales
from (
select c.[name] album_name
, isnull(d.[name]
, e.[name]) artistlabel_name
, c.releasedate
, e.[name] label
, sum(b.price) sales
, count(b.Id) units
from [order] a
left join orderalbum b on b.orderId = a.Id
left join album c on b.albumId = c.Id
left join label e on c.labelId = e.Id
left outer join artist d on c.artistId = d.Id
where a.successful=1
and datepart(ww, a.OrderDate) = datepart(ww, getDate())-1
and datepart(yyyy, a.OrderDate) = datepart(yyyy, getDate())
group by
c.[name]
, isnull(d.[name], ,e.[name])
, c.releasedate
, e.[name]
union
select e.[name] album_name
, isnull(d.[name], f.[name]) artistlabel_name
, e.releasedate
, f.[name] label
, sum(b.price) sales
, count(b.Id) units
from [order] a left join orderalbum b on b.orderId = a.Id
left join albumvariant c on b.albumvariantId = c.Id
left join album e on c.albumId = e.Id
left join label f on e.labelId = f.Id
left outer join artist d on e.artistId = d.Id
where a.successful=1
and datepart(ww, a.OrderDate) = datepart(ww, getDate())-1
and datepart(yyyy, a.OrderDate) = datepart(yyyy, getDate())
group by
e.[name]
, isnull(d.[name], f.[name])
, e.releasedate
, f.[name]
) x
group by
x.album_name,
x.artistlabel_name,
x.releasedate,
x.label
having sum(x.sales) > 0
and album_name is not null
order by
total_units desc;
希望那里有一个可以帮助我的MSSQL忍者。
答案 0 :(得分:3)
我想这个查询会返回两个结果集,第一个来自set datefirst 1;
,然后是第二个。
阅读PHP应用程序中的第二个结果集。
答案 1 :(得分:0)
在我看来,像ta.speot.is有答案。但是,您需要小心WHERE子句中的日期,特别是如果GetDate()落在一年的第一周。
答案 2 :(得分:-1)
注意:没有阅读/尝试过您的脚本
如果您使用的是MS SQL Server,则可以在Management Studio中输入此查询并让其进行验证。该按钮在“新查询”窗口中可用。这样你就可以检查语法是否正常。 如果语法是正确的,那么查询和它中的多个连接可能是一个问题,但是如果不知道表结构和数据(imo)就很难说出来。