初学PHP语法,mySQL_query错误

时间:2011-12-05 20:08:09

标签: php mysql sql

我正在尝试使用DreamWeaver CS5创建一个只是CREATE VIEW的页面。如何输入我的代码以仅接收包含与登录用户相关的所有数据的表。

mysql_query(
CREATE VIEW UserResults
AS 
   SELECT E.No, E. Description
      , Count(R.RID WHERE $Username= R.Owner)
      , Count(R.RID WHERE $Username= R.Owner AND Status==’Active’ )
   FROM ETable AS E, RTABLE as R
   ORDER BY E.No)

3 个答案:

答案 0 :(得分:3)

您必须将查询放在引号中以使其成为字符串。

mysql_query("CREATE VIEW UserResults AS SELECT E.No, E. Description, Count(R.RID WHERE $Username= R.Owner), Count(R.RID WHERE $Username= R.Owner AND Status==’Active’ ) FROM ETable AS E, RTABLE as R ORDER BY E.No")

答案 1 :(得分:1)

Daniel对报价是正确的。但是,你应该看一下PDO,mysql_函数有点过时了。您可以阅读有关here的更多信息。

答案 2 :(得分:1)

  • 你有一个额外的结束括号,应删除
  • 观看次数不应为ORDER BY
  • WHERE子句不应位于SELECT的中间,您需要使用CASE
  • 您将返回笛卡尔积而不是将您的桌子加在一起,这可能会提供比您想要/期望更多的结果。

R.RID语句的THEN块中的CASE可能需要1,并不完全确定您希望从那些COUNT获得的内容你最初的陈述。

我试图找出你想要做的事情,我认为就是这样:

CREATE VIEW UserResults AS
   SELECT E.No, E.Description
      , SUM(CASE 
               WHEN $Username = R.Owner THEN R.RID
               ELSE 0
            END) AS SumOfOwner
      , SUM(CASE
               WHEN $Username = R.Owner AND Status = 'Active' THEN R.RID
               ELSE 0
            END) AS SumOfOwnerAndActive
   FROM ETable AS E
   INNER JOIN RTABLE as R ON E.No = R.ENo
   GROUP BY E.No, E.Description