在 PHP 中使用 WITH SQL 查询
我尝试重写下面的查询,以便它可以在 PHP 页面中工作,但是我找不到任何有关如何在 PHP 中使用“;WITH”语句或如何实现相同效果的文档使用有效的 PHP 查询。在 MS SQL 2008 R2 Management Studio 中执行时,该查询工作完美,但当我尝试从 SQLMaestro 将其加载到 MSSQL PHP 生成器时,它会出现错误。
查询是:
;WITH UserStars AS
(
SELECT a.username, ROUND(AVG(CAST(b.stars AS FLOAT)),1) Stars
FROM score b
JOIN game_users a ON a.id = b.game_users_id
GROUP BY a.username
)
SELECT CASE WHEN Stars < 1.4 THEN 'StarAmount1'
WHEN Stars BETWEEN 1.4 AND 2.4 THEN 'StarAmount2'
WHEN Stars BETWEEN 2.4 AND 3.4 THEN 'StarAmount3'
WHEN Stars BETWEEN 3.4 AND 4.4 THEN 'StarAmount4'
WHEN Stars BETWEEN 4.4 AND 5.0 THEN 'StarAmount5' ELSE 'AnotherStarAmount' END StarAmount,
COUNT(*) Users
FROM UserStars
GROUP BY CASE WHEN Stars < 1.4 THEN 'StarAmount1'
WHEN Stars BETWEEN 1.4 AND 2.4 THEN 'StarAmount2'
WHEN Stars BETWEEN 2.4 AND 3.4 THEN 'StarAmount3'
WHEN Stars BETWEEN 3.4 AND 4.4 THEN 'StarAmount4'
WHEN Stars BETWEEN 4.4 AND 5.0 THEN 'StarAmount5' ELSE 'AnotherStarAmount' END
有人能给我指出正确的方向,以便可以在 PHP 和 MS SQL 2008 R2 Management Studio 中使用相同的查询吗?
I have tried to rewrite the below query, so that it will work in a PHP page, but I have not been able to find any documentation on how the ";WITH" statement can be used in PHP, or how to make the same effect with a valid PHP Query.. The Query works perfect when executet in MS SQL 2008 R2 Management Studio, but it gives errors when I try to load it into MSSQL PHP Generator from SQLMaestro.
The query is:
;WITH UserStars AS
(
SELECT a.username, ROUND(AVG(CAST(b.stars AS FLOAT)),1) Stars
FROM score b
JOIN game_users a ON a.id = b.game_users_id
GROUP BY a.username
)
SELECT CASE WHEN Stars < 1.4 THEN 'StarAmount1'
WHEN Stars BETWEEN 1.4 AND 2.4 THEN 'StarAmount2'
WHEN Stars BETWEEN 2.4 AND 3.4 THEN 'StarAmount3'
WHEN Stars BETWEEN 3.4 AND 4.4 THEN 'StarAmount4'
WHEN Stars BETWEEN 4.4 AND 5.0 THEN 'StarAmount5' ELSE 'AnotherStarAmount' END StarAmount,
COUNT(*) Users
FROM UserStars
GROUP BY CASE WHEN Stars < 1.4 THEN 'StarAmount1'
WHEN Stars BETWEEN 1.4 AND 2.4 THEN 'StarAmount2'
WHEN Stars BETWEEN 2.4 AND 3.4 THEN 'StarAmount3'
WHEN Stars BETWEEN 3.4 AND 4.4 THEN 'StarAmount4'
WHEN Stars BETWEEN 4.4 AND 5.0 THEN 'StarAmount5' ELSE 'AnotherStarAmount' END
Could someone point me in the right direction, so that the same query could be used in both PHP and in MS SQL 2008 R2 management studio?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这样:
Try it like this:
这不是一种完全直观的方法,而是一种无需所有
CASE
表达式即可给猫剥皮的不同方法:Not an altogether intuitive approach, but a different way to skin the cat without all the
CASE
expressions: