Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-如何选择具有1个条件的所有数据,并在必要时使用其他条件完成?_Mysql_Sql_Asp Classic - Fatal编程技术网

MySQL-如何选择具有1个条件的所有数据,并在必要时使用其他条件完成?

MySQL-如何选择具有1个条件的所有数据,并在必要时使用其他条件完成?,mysql,sql,asp-classic,Mysql,Sql,Asp Classic,我有一个带有状态列和3个条件的DB: -1=被谴责 0=中子 1=已批准 我需要将所有寄存器分为两组: 设置1(主)-这是“主”表,限制为5个寄存器。但所有批准的文件都必须放在这张表中——即使我们有超过5份文件——并且没有一份“受谴责”的登记册可以放在这里 例如: -如果我们有10个批准-主表将有10个全部批准。 -如果我们有2个已批准-主表将有2个已批准的+3个中子。(总共5个)-但如果我只有1个中子,例如10个重复验证-该表将只有2个全部批准的+1个中子。(3个登记册) 第2组-将有所有已复

我有一个带有状态列和3个条件的DB:

-1=被谴责
0=中子
1=已批准

我需要将所有寄存器分为两组:

设置1(主)-这是“主”表,限制为5个寄存器。但所有批准的文件都必须放在这张表中——即使我们有超过5份文件——并且没有一份“受谴责”的登记册可以放在这里

例如:
-如果我们有10个批准-主表将有10个全部批准。
-如果我们有2个已批准-主表将有2个已批准的+3个中子。(总共5个)-但如果我只有1个中子,例如10个重复验证-该表将只有2个全部批准的+1个中子。(3个登记册)

第2组-将有所有已复制的+其余的中子-没有寄存器限制

情况1:状态1超过寄存器限制(5)

集合1将为:(所有状态1)

第2组将是:

8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1
6 - Fred  -  0
7 - Nick  -  0
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1
5 - Helen - -1
6 - Fred  - -1
7 - Nick  - -1
8 - Gio   - -1
9 - Rick  - -1
10 - May  - -1
情景2:(填写状态为0的表格)

集合1将是:(所有状态1+2,状态0)

第2组将是:

8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1
6 - Fred  -  0
7 - Nick  -  0
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1
5 - Helen - -1
6 - Fred  - -1
7 - Nick  - -1
8 - Gio   - -1
9 - Rick  - -1
10 - May  - -1
然后-情况3:(所有状态1+状态0小于寄存器限制-5)

集合1将是:(所有状态1+1和状态0-仅4个寄存器)

第2组将是:

8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1
6 - Fred  -  0
7 - Nick  -  0
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1
5 - Helen - -1
6 - Fred  - -1
7 - Nick  - -1
8 - Gio   - -1
9 - Rick  - -1
10 - May  - -1

有什么想法吗?

通常的方法是使用SQL查询收集要显示的行。 这将提供选择(WHERE子句)和排序(ORDERBY子句)。一旦 如果有行,请根据需要使用ASP呈现HTML

我将把ASP经典留给你

前5名,状态=1

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` = 1
ORDER BY `status` DESC,`name` ASC
LIMIT 5;
SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` = -1
ORDER BY `status` DESC,`name` ASC;
所有状态均为1或0

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` IN (0,1)
ORDER BY `status` DESC,`name` ASC;
所有状态均为-1

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` = 1
ORDER BY `status` DESC,`name` ASC
LIMIT 5;
SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` = -1
ORDER BY `status` DESC,`name` ASC;

您似乎混淆了术语DB和TABLE。对于DB,我假定您指的是table,而对于table,我假定您指的是查询的结果。我相信我们有很多想法,但你需要展示你的尝试。所以这不是一个代码编写服务。你好@sloather首先感谢你宝贵的时间来帮助我。我不是mysql方面的专家,但我想这将是mysql更好的解决方案。我正在尝试使用经典ASP的解决方案-使用DO/LOOP,但我无法根据需要限制表。您需要使用prepare语句使查询动态。哪一个?第一组将结果限制在前5个。如果要限制第二组,请添加限制条款。如果批准了7个用户,则第一组将包括7个项目,而不是默认的5个限制