2013-03-05 68 views
0

我只是试图将雇员的姓名连接到一个字段中,只要条目的WorkOrderNumber值相同。无法弄清楚为什么这个查询没有正常运行

$Data = "SELECT tt.WorkOrderNumber AS WN, 
       SUBSTRING(SELECT tt2.AssignedEmp 
       FROM TestTable AS tt2 
       WHERE tt2.WorkOrderNumber=tt.WorkOrderNumber 
       ORDER BY tt2.AssignedEmp) AS emp 
       FROM TestTable AS tt"; 

每当我运行此查询我得到这个回在我的网站:

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] At most one record can be returned by this subquery.

有我丢失的东西?

为了澄清...我拍摄的:

可以说我有这种形式

WorkOrderNumber AssignedEmp 
2012087-28  Jeff  
2012087-28  Bill  
2012087-28  John  

我想查询数据,并得到这样的结果数据.. 。

WorkOrderNumber Employee    
2012087-28  Jeff,Bill,John  
+0

我不确定MS Access是否支持它,但SQL Server具有'FOR XML PATH'功能。请参阅:http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server – JodyT 2013-03-05 23:31:40

+0

我尝试过,但它一直给我语法错误。也许它不支持它 – Hoser 2013-03-05 23:43:40

+0

访问不。你绝对不能在Access 2003或更早版本中这样做,并且我非常肯定你在Access中根本无法做到这一点(我想可能是多值字段会有所帮助,但看起来不会像他们那样)而不使用VBA。 – 2013-03-05 23:44:10

回答

2

这回不止一个记录:

SELECT tt2.AssignedEmp 
FROM TestTable AS tt2 
WHERE tt2.WorkOrderNumber=tt.WorkOrderNumber 
ORDER BY tt2.AssignedEmp 

这是不会工作。你可以在它上面输入一个TOP (1)来修复一个快速和脏的问题,但是我怀疑你希望这个子查询返回的内容没有被返回,所以用这种方法修复它可能不是一个好主意。

+0

您是否对该查询应该如何编写有所了解?我所拍摄的只是WorkOrderNumber值匹配时所有AssignedEmp值的串联 – Hoser 2013-03-05 23:15:24