2012-05-22 101 views
2

我試圖執行以下查詢:SQL查詢不會在MySQL 5.5.16工作

$query = "SELECT O. * AS NUM FROM (ab_order O) 
    LEFT JOIN ab_user U ON (O.id_user=U.id) 
    WHERE O.id IN (SELECT OT.id_ab_order FROM ab_order_transaction OT 
     LEFT JOIN ab_transaction T ON (OT.id_ab_transaction = T.id) 
    LEFT JOIN ab_user U ON (T.id_user = U.id) 
    WHERE T.validated = 1 {$condTrans}) {$condOrder} 
    ORDER BY {$orderCol} LIMIT $from, $numRecords "; 
$queryDB = $DB->queryExec($query); 

在直播服務器:

  • 它的工作原理與MySQL 3.3.10版本。
  • PHP版本5.2.17。

但我需要使用localhost:

  • XAMPP for linux的,V 1.7.7
  • PHP 5.3.8
  • MySQL版本5.5.16。

本地主機上,它說:

MySQL error: 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS NUM 
FROM (ab_order O) 
LEFT JOIN ab_u' at line 1. 

然後任何更簡單的方法uprgrade直播服務器Mysql數據庫?

+0

我不能肯定,但'FROM(ab_order O)'似乎奇怪的語法我。你可以嘗試去除括號嗎?沒有括號的 – nettle

+0

仍然不起作用... – vetrnicek

+0

一般來說,您應該儘量將您的開發環境設置得儘可能接近實時環境。當你使用MySQL 5進行開發並部署到MySQL 3時,測試和調試要困難得多 - 就像將文檔另存爲MS Word 2008,然後嘗試在Word 2000中打開它一樣。 –

回答

2

所有列的別名看起來不正確:SELECT O. * AS NUM。我不確定爲什麼它可以在以前的版本上工作,但應該刪除as num,或者每個列應該被明確別名。

1

您可以在SELECT中爲單個列定義別名。這裏是問題

SELECT O. * AS NUM 

取而代之的是使用

SELECT O. * 

這是非常有用的文章Using Column Alias in SELECT Statement

+0

是的,謝謝,如果我使用它,它的工作原理:'SELECT O. * FROM(ab_order O) LEFT JOIN ab_user U ON(O.id_user = U.id) WHERE O.id IN (SELECT OT.id_ab_order FROM ab_order_transaction OT LEFT JOIN ab_transactionŤ ON(OT.id_ab_transaction = T.id) LEFT JOIN ab_userù ON(T.id_user = U.id) WHERE T.validated = 1 {$ condTr ){$ condOrder} ORDER BY {$ orderCol} LIMIT $ from,$ numRecords「;' – vetrnicek

+0

歡迎您。如果這比你能接受任何答案有用 –