2012-09-19 156 views
2

此查询在本地正常工作,但在主机服务器(x10hosting.com)上创建确切的数据库后,它不会。SQL查询不在主机服务器上工作,但在本地工作

SELECT (seating_capacity - (IFNULL(SUM(no_of_seats_booked),0))) AS "Seats Available", 
     seating_capacity AS "Seating Capacity" 
FROM tbl_showing AS h 
INNER JOIN tbl_booking AS b 
ON h.showing_id = b.showing_id 
INNER JOIN tbl_screen AS c 
ON h.screen_id = c.screen_id 
WHERE h.showing_id = 9; 

它的作用是检查屏幕的座位容量,预订所有座位的总和,然后将其从座位容量中拿走。如果没有座位预订返回零。

我想我的查询是正确的,但mysql服务器可能不支持某些高级功能。

服务器运行的是: MySQL服务器版本:63年5月1日 - rel13.4 MySQL客户端版本:4.1.22

任何帮助吗?

更新:它不会返回一个错误,而是它应该返回一个特定的整数时返回null。

+2

检查和比较本地和远程的sql版本,如果它给出错误***包括有问题的错误*** –

+1

这个查询有什么问题?它会引发错误吗?如果结果不对,请检查数据和WHERE条件。这可能是因为'shows_id'值发生了变化? – Devart

+0

也检查从mysql.ini(strict_mode,ansi模式等)的设置。不同的文件系统可以有所不同,无论表名是否区分大小写。 InnoDB的设置(如果使用)也可以有所作为。 –

回答

0

固定。这是引擎。它使用myisam。更改为ENGINE = InnoDB CHARSET = utf8。

谢谢大家的意见。

0

由于SUM()是一个聚合函数,我会提供带有GROUP BY子句的查询。这可能是查询在主机上失败的原因。

+0

它不会使用MySQL失败。 – Kermit

0

您是否检查过在尝试连接主机服务器时没有防火墙或安全问题?那就是我看的地方。

0

取决于“挑剔”的设置是在你的具体实现上......你应该总是在反引号中包含表名(和字段名)。这是键盘左上角的字符(美国)...

如果不这样做,请检查您的错误日志,看看为什么查询失败。它应该返回一个特定的错误消息和代码。

相关问题