2014-09-25 56 views
0

这里的方式是,查询(MySQL的句法):是否有一个更简单的执行此查询

select 
    id_image 
from 
    (
    select 
     id_image 
     , count(id_image) as nb 
    from 
     data 
    group by 
     id_image 
) temp_table 
where 
    nb = (select count(distinct id_group) from data) 
  • 数据是3列的表格:INT id_user,诠释id_group和int id_image
  • 一行(X,Y,Z)表示:
    • 图像z是在图像的基团Y
    • 基团Y是由用户创建的X

而且我们想要列出每个图像组中存在的所有图像。谢谢。

+0

我认为'有'是可以帮助你的条款吗? – 2014-09-25 08:46:24

+0

只是一句话:你表没有正常化。您可能会冗余地持有这些组的创建者,这可能会导致数据不一致。您应该有一个表格用于图像组,另一个表格用于图像。另一个用于图像组 - 图像关系,如果图像可以在多个组中。 – 2014-09-25 08:59:33

回答

0

您正在选择数据中出现的所有图像标识,因为该表中存在不同的组标识?这似乎很奇怪。

总之,查询可重新写为:

select id_image 
from data 
group by id_image 
having count(*) = (select count(distinct id_group) from data); 
+0

谢谢大家。这确实是关于“有”条款。 Thorsten,我们希望列出每个图像组中存在的所有图像,即nb次出现在数据中的图像,其中nb =不同组的数量。是的,id_user在这里没有使用,它使数据没有正常化,但是这是一个很长的故事:)。 – mikedu95 2014-09-26 10:25:38

0

如何试试这个:

选择id_group,从数据id_image其中id_group中(选择数据不同id_group);

相关问题