Php MySQL中的替代视图是什么?
我有下面的问题,结果是什么并不重要Php MySQL中的替代视图是什么?,php,mysql,Php,Mysql,我有下面的问题,结果是什么并不重要 SELECT `doctors`.`id` AS `id`, `doctors`.`name` AS `name`, count( `onvan-naghs`.`negative-mark` ) AS `negative_marks` FROM ( ( ( ( `doctors` JOIN `doctor-barge-naghs` ON ( ( `doctor-barge-naghs`.`code-do
SELECT
`doctors`.`id` AS `id`,
`doctors`.`name` AS `name`,
count( `onvan-naghs`.`negative-mark` ) AS `negative_marks`
FROM
(
(
(
( `doctors` JOIN `doctor-barge-naghs` ON ( ( `doctor-barge-naghs`.`code-doctor` = `doctors`.`id` ) ) )
JOIN `onvan-naghs` ON ( ( `doctor-barge-naghs`.`code-naghs` = `onvan-naghs`.`id` ) )
)
JOIN `barge` ON ( ( `doctor-barge-naghs`.`code-barge` = `barge`.`id` ) )
)
JOIN `paziresh` ON ( ( `barge`.`shomare-paziresh` = `paziresh`.`id` ) )
)
WHERE
( `paziresh`.`tarikh_paziresh` BETWEEN 1111111111 AND 9999999999 )
GROUP BY
`doctors`.`id`,
`doctors`.`name`
ORDER BY
`onvan-naghs`.`negative-mark` DESC
然后我将其保存为一个名为scores
然后我在另一个查询中使用它,它运行良好
SELECT
`scores`.`id` AS `id`,
`scores`.`name` AS `name`,
`scores`.`negative_marks` AS `negative_marks`,
find_in_set( `scores`.`negative_marks`, ( SELECT group_concat( DISTINCT `scores`.`negative_marks` ORDER BY `scores`.`negative_marks` DESC SEPARATOR ',' ) FROM `scores` ) ) AS `rank`
FROM
`scores`
但我的问题是在某些情况下无法使用视图
我想使用一个完整的查询,我必须使用一个子查询
但是我不能在它之外使用子查询
如下
SELECT *,
find_in_set( `t1`.`negative_marks`, ( SELECT group_concat( DISTINCT `t1`.`negative_marks` ORDER BY `t1`.`negative_marks` DESC SEPARATOR ',' ) FROM `t1` ) ) AS `rank`
FROM
(
SELECT
`doctors`.`id` AS `id`,
`doctors`.`name` AS `name`,
count( `onvan-naghs`.`negative-mark` ) AS `negative_marks`
FROM
(
(
(
( `doctors` JOIN `doctor-barge-naghs` ON ( ( `doctor-barge-naghs`.`code-doctor` = `doctors`.`id` ) ) )
JOIN `onvan-naghs` ON ( ( `doctor-barge-naghs`.`code-naghs` = `onvan-naghs`.`id` ) )
)
JOIN `barge` ON ( ( `doctor-barge-naghs`.`code-barge` = `barge`.`id` ) )
)
JOIN `paziresh` ON ( ( `barge`.`shomare-paziresh` = `paziresh`.`id` ) )
)
WHERE
( `paziresh`.`tarikh_paziresh` BETWEEN 1111111111 AND 9999999999 )
GROUP BY
`doctors`.`id`,
`doctors`.`name`
ORDER BY
`onvan-naghs`.`negative-mark` DESC
) as t1
它不能使用t1,不能理解它是什么,不能说“表”客户医院。t1“不存在”
如果我想使用整个查询,而不是使用不同的视图,并且子查询不能在外部使用,我应该怎么做
我尝试使用with语法,但我的平台不支持它
我需要下面的代码
WITH
cte1 AS (SELECT a, b FROM table1),
cte2 AS (SELECT c, d FROM table2)
SELECT b, d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;
例如,想象下图
为什么我不能以这种方式使用子查询如果我找到了一种方法,我认为在表/列标识符中包含“-”的“获取我的答案”非常危险。
FROM(find_in_set(
不是有效的SQL。很难确切地说出您的问题是什么,但我很确定它与您的视图无关。如果您可以使用视图发布查询,可能会更容易调试。似乎您需要该功能,这是MySQL(8.0)的新功能是的,没错,但我的MySQL版本是MySQL 5.0.12-dev,我无法使用它,也无法升级它;我现在使用临时表,但它还有一个问题,无法多次重新打开