2016-11-15 68 views
2

我在Access中有一个表,其中有多个记录具有相同的ID,它们相互对应。SQL查询的ID分组和其他其他字段有一定的值

我想查找某些具有特定日期值的记录。但是,我希望获得与该ID相对应的所有信息(即具有相同ID的所有其他记录)。我已经试过这样的事情:

SELECT * 
FROM myTable 
WHERE LEFT(Field1,7) = '2016-11' IN (SELECT ID 
             FROM myTable 
             GROUP BY ID 
             HAVING COUNT(*)>1) 

SELECT * 
FROM myTable 
WHERE ID = (SELECT * FROM myTable WHERE LEFT(Field1,7) = '2016-11' 

这些都不是给我适当的输出。我想我可能需要某种类型的For循环,但是没有太多经验用SQL来完成。这样我可以遍历所有与该日期部分一起返回的ID。有什么建议么?我会将表格格式放在帖子中,但由于某些原因,表格格式不适用于我。挫折是真实的!

哈哈感谢提前花时间来读我的问题。非常感激。

编辑

这是一个视觉的我的表是什么样子:

ExampleTable

我想选择所有十一月期间发生的记录,同时也获得相应的信息(即与11月份记录具有相同ID号码的记录)。

+0

为什么子查询:'SELECT * FROM myTable的WHERE LEFT(Field1,7)='2016-11''? – Parfait

+0

我试图选择当月发生的所有记录。但是,该列被格式化为文本,因为每个值不一定是日期。 最后,我想用本月的日期筛选出所有记录,然后检索所有其他具有与该日期相同的ID的记录。 –

回答

1

考虑加入WHERE条件在子查询:

SELECT * 
FROM myTable 
WHERE ID IN (SELECT ID FROM myTable 
      WHERE LEFT(Field1, 7) = '2016-11'); 

或者避免子查询,尝试一个INNER JOIN在过滤自通过ID加入:

SELECT myTable.* 
FROM myTable 
INNER JOIN 
    (SELECT ID FROM myTable 
    WHERE LEFT(Field1, 7) = '2016-11') sub 
ON sub.ID = myTable.ID 
+0

不幸的是,这仍然只是给我记录日期的记录:/我添加了我的表的排序格式化的屏幕截图。也许这会有所帮助。 –

+0

请参阅编辑。此外,你有一个[实体/属性值模型](http://stackoverflow.com/questions/870808/entity-attribute-value-database-vs-strict-relational-model-ecommerce-question)这是不是最好的为关系数据库。 – Parfait

+0

这是来自xml文件的数据,并按照您所看到的导入。我不改变它的原因仅仅是因为我不确定每个记录的字段数是否会发生变化。在我不知情的情况下可以添加列。如果我们能够摆动桌子并保持动态的方式,我很乐意了解它。上面的两种方法也适用于我,所以谢谢! –

相关问题