2017-09-30 152 views
0

我目前有一个视图,名为v_testhorses,它从HorsesResults中提取数据。它具有以下值 -从另一个视图创建视图

HID|HName|YOB|Gender|Sire|Dam|OName|Stable|LTE|Year 

LTE =从Resultsearnings场之和Year =每年创建一个单独的列

(例如,如果马乙表明在2012年和2011年,那么这两年将只有专栏,每年有不同的LTE)

我试图创建一个视图,只是使用Sire字段,同时考​​虑到这些其他的事情。理想情况下它会是这样的 -

HID|HName|ProgenyEarnings|Year 

如果在这种情况下HName是基于关闭SireProgenyEarnings是与Sire所有马匹的LTE总和。这将是一种查看v_testhorses中的所有马匹的方法,并将它们“分配给”也在v_testhorses数据库中的父亲。根据他们的后代,这将是最容易的方式来决定谁是每年最高的卖骏马。

我希望这是有道理的! 我一直在尝试WHERE HName=Sire作为一个条款,它只是给了我一个空的看法。

+0

了同样的看法如何可以有不同的年每匹马?视图不能动态创建列,只能通过存储过程中的动态SQL来完成。 – Barmar

回答

0

你必须加入的观点与其自身相关的后代其陛下:

SELECT h1.HID, h1.HName, SUM(h2.LTE) AS ProgenyEarnings, h1.Year 
FROM v_testhorses AS h1 
JOIN v_testhorses AS h2 ON h1.HName = h2.Sire 
GROUP BY h1.HID 
+0

这会导致以下错误:1104 - SELECT将检查多个MAX_JOIN_SIZE行;检查你的WHERE并且使用SET SQL_BIG_SELECTS = 1或者SET MAX_JOIN_SIZE =#如果SELECT是好的 –

+0

你可能需要使用临时表而不是视图。 – Barmar

+0

嗯,我希望能在我的网站上使用PHP调用 –