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,我无法使用它,也无法升级它;我现在使用临时表,但它还有一个问题,无法多次重新打开