Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql存储过程?_Mysql_Sql_Stored Procedures - Fatal编程技术网

mysql存储过程?

mysql存储过程?,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我有一份20支球队的名单和360场比赛。此表格为表2: 团队 身份证 名字 固定设施 身份证 主队 宅基地 阿瓦泰姆 awayscore 日期时间 基本上,我想尝试对每个团队进行计算,并将其存储在数据库中。它将使用fixtures表中的所有数据并创建以下内容: 可能的存储过程 球队名称,最近5场主场比赛的主场胜利数,最后5场主场比赛的平局数,最后5场客场比赛的平局数,最后5场客场比赛的客场胜利数 我想将此数据用作每个团队的当前表单,由于此数据将在我的网站中的许多地方使用,我真的需要找出最

我有一份20支球队的名单和360场比赛。此表格为表2:

团队
  • 身份证
  • 名字
固定设施
  • 身份证
  • 主队
  • 宅基地
  • 阿瓦泰姆
  • awayscore
  • 日期时间
基本上,我想尝试对每个团队进行计算,并将其存储在数据库中。它将使用fixtures表中的所有数据并创建以下内容:

可能的存储过程

球队名称,最近5场主场比赛的主场胜利数,最后5场主场比赛的平局数,最后5场客场比赛的平局数,最后5场客场比赛的客场胜利数


我想将此数据用作每个团队的当前表单,由于此数据将在我的网站中的许多地方使用,我真的需要找出最佳方法。

可以在一个查询中完成,您需要两个连接:

SELECT t.name,
    SUM(IF(f_h.homescore > f_h.awayscore, 1, 0)) AS HomeWins,
    SUM(IF(f_h.homescore = f_h.awayscore, 1, 0)) AS HomeDraws,
    SUM(IF(f_a.awayscore > f_a.homescore, 1, 0)) AS AwayWins,
    SUM(IF(f_a.awayscore = f_a.homescore, 1, 0)) AS AwayDraws 
FROM team t 
LEFT JOIN fixtures f_h ON f_h.hometeam = t.id AND f_h.id IN (
    SELECT id    
    FROM fixtures
    WHERE hometeam = t.id
    ORDER BY datetime DESC
    LIMIT 5)
LEFT JOIN fixtures f_a ON f_a.awayteam = t.id AND f_a.id IN (
    SELECT id 
    FROM fixtures
    WHERE awayteam = t.id
    ORDER BY datetime DESC
    LIMIT 5)
GROUP BY t.name

只需要子选择来获取最后5个装置

存储过程是可维护性和性能的敌人。如果可能的话,尽量避免。我在第二行发现了一个错误,我似乎无法准确地计算出你到底做了什么。有什么想法吗?对不起,忘了IF语句中的括号。编辑了这个查询,现在就试试。非常感谢你在这方面的帮助:)我也在使用mysql 5.0.92,我认为IN语句不起作用,我想你不知道有什么替代方法吗?是的,IN语句必须在mysql 5.0上工作。x:再次感谢你的帮助。我得到一个错误:这个版本的mysql还不支持LIMIT&在/ALL/ANY/SOME子查询中。我认为这是因为IN不受支持:(