PyQT:SQL查询运行,但不会在QTableView中显示输出以获得更大的查询

时间:2017-03-24 06:34:24

标签: sql-server pyqt4

我在PyQt中创建一个应用程序,在点击按钮时,查询运行并返回QTableView中的输出。这是我试图实现此目的的代码:

self.table2 = QTableView()
projectModel1.setQuery("select * from xyz")
self.table2.setModel(projectModel1)

我的问题是,这似乎对于一个相对较小的查询非常有效,但是当我用一个在我的数据库中创建表的较大查询替换查询时,它不返回任何输出(让我们调用这个大查询作为'查询A' )。但是当我检查我的数据库时,我发现该表已创建,这意味着'查询A' 已运行但未返回结果。在'查询A' 之后,也不允许任何其他查询。

我已尝试在SQL中运行查询,并且'查询A' 正常工作,因此这不是问题。

我想知道的是,对查询大小有一些限制吗?为什么即使查询后的查询也不会运行?

这是'查询A' ,以了解查询的复杂性:

Declare @d as datetime, @w as INT, @y as INT, @x as INT, @z as Int, @yy as INT, @maxweek as Int, @ww as Int, @dd as datetime, @t as varchar(20) SET @d= getdate() set @t ='/12/31' SET @w = (datepart(DY, datediff(d, 0, @d) / 7 * 7 + 3)+6) / 7 SET @w=@w-4 SET @y =year(getdate()) SET @x=@y*100+@w if @w <= 0 Begin set @yy = year(getdate())-1 set @dd = cast(cast(@yy as Varchar(10))+ @t + ' 11:11:11'  as datetime) set @maxweek = (datepart(DY, datediff(d, 0, @dd) / 7 * 7 + 3)+6) / 7 set @ww= @maxweek + @w set @w= 1 set @y=@yy set @z=@yy*100+@ww set @x=@y*100+@w end else set @z=@x 
SELECT s.Name, s.CountryId, AVG(s.Timecalc) as MedianBusLOI FROM ( 
SELECT imp.name ,Week, i.countryId, 
datediff(ss, r.Begin, r.End) As Timecalc,
ROW_NUMBER() OVER (PARTITION BY imp.name  ,Week, dataleverantor ORDER BY datediff(ss, r.Begin, r.End) ASC, Foreignid ASC) AS RowAsc,
ROW_NUMBER() OVER (PARTITION BY imp.name  ,Week, dataleverantor ORDER BY datediff(ss, r.SurveyBegin, r.SurveyEnd) DESC, Foreignid DESC) AS RowDesc 
FROM People r inner join Imports imp on imp.id=r.importid 
inner join interview i on i.id = r.InternalRespondentId 
WHERE imp.name is not null and r.year*100 + r.week >= @x  and r.year*100 + r.week >= @z ) s 
WHERE s.RowAsc IN (s.RowDesc, s.RowDesc - 1, s.RowDesc + 1) GROUP BY s.name, countryId

这个查询所做的就是它计算一个人完成填写表格所花费的中间时间。查询没有问题,它完美无缺。

0 个答案:

没有答案