2012-09-19 157 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

取決於「挑剔」的設置是在你的具體實現上......你應該總是在反引號中包含表名(和字段名)。這是鍵盤左上角的字符(美國)...

如果不這樣做,請檢查您的錯誤日誌,看看爲什麼查詢失敗。它應該返回一個特定的錯誤消息和代碼。

相關問題