按文件类型划分显示的数据

时间:2014-05-19 19:44:11

标签: php html mysql sql

id      time      filetype
381839  604208      ABC
414263  340248      ABC
415358  665808      DEF
428034  215805      XYZ
430640  202388      XYZ
436590  4739780     ABC
438848  635382      DEF

上表是我的mysql查询的结果。目前它只显示一个带有上面列的巨型表。它当前显示一列中的所有文件类型。

select * 
from  `table name` 
where id= `value`

目标:我希望得到不同的表格除以文件类型而不是一个混合了所有文件类型的大表格,例如

Table 1:
id      time      filetype
381839  604208      ABC
414263  340248      ABC
436590  4739780     ABC

Table 2:
428034  215805      XYZ
430640  202388      XYZ

Table 3:
415358  665808      DEF
438848  635382      DEF

等等。

在sql查询中是否有办法可以做到这一点,或者它是否特定于可以进行除法的HTML标记。 ?我尝试通过GROUP BY将它们组合在一起,但这不是我所预期的。在这方面的任何想法将不胜感激。

5 个答案:

答案 0 :(得分:2)

你是说这个吗?

SELECT * From table ORDER BY filetype ASC

要使用标签对答案进行分组,您可以循环结果:

$row=mysqli_fetch_assoc($result);
$type=$row['filetype'];
while($row=mysqli_fetch_assoc($result)){
 if($row['filetype']!=$type){
  echo 'NEW TYPE';
  $type=$row['filetype'];
 }
}

答案 1 :(得分:0)

在组之间插入行是客户端功能。您可以使用分析函数来清空重复字段,如果这是您要查找的内容,但是上次我看,Mysql没有ROW_NUMBER()OVER()功能。

此外,我们通常称之为“休息”。在报告中。

只需按查询的filetype字段排序,然后在更改时,适当更改HTML。

答案 2 :(得分:0)

您说I want to get subset of one large table divided by filetype然后只使用WHERE条件,如

select * 
from  `table name` 
where filetype= 'ABC'

根据您的评论,您必须单独执行

create table newtbl
as
select * 
from  `table name` 
where filetype= 'ABC'

(OR)

使用类似的存储过程(根据最新评论,而不是为视图创建新表)

create procedure newinsert (IN tabname varchar(20), IN catname varchar(10))
as
begin
    create view tabname
    as
    select * 
    from  `table name` 
    where filetype= catname
end

比你可以调用你的程序

call newinsert('newtbl','ABC') 
call newinsert('newtbl1','XYZ') 
call newinsert('newtbl2','DEF') 

这样就不会有任何开销;因为视图本身不存储数据。除此之外,如果您只是想要显示隔离数据,那么我认为您最好的选择是在您的应用程序中完成它。

答案 3 :(得分:0)

我认为您希望在显示时分离结果。这不能在SQL中完成。当您使用group by时,您只是对结果进行分组,而不是如何显示结果。如果您正在使用HTML / CSS,则需要在UI上完成在明显标记的组中显示它。

答案 4 :(得分:0)

阅读你对@rageit回答的评论,我会

SELECT filetype FROM table GROUP BY filetype

因此,您将获得所有文件类型,然后foreach filetype as type

SELECT * FROM table WHERE filetype = type

让每个结果单独处理。