2013-03-05 3 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

+0

Я пробовал работать с этим, но это давало мне синтаксические ошибки. Возможно, он не поддерживает его – Hoser

+0

Доступ нет. Вы определенно не можете сделать это в Access 2003 или ранее, и я уверен, что вы не можете сделать это в Access вообще (я думал, возможно, многозначные поля помогут, но это не похоже на то, что они будут) без использования VBA. –

ответ

2

Это возвращает более одной записи:

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

который не собирается работать. Вы можете бросить TOP (1) на это для быстрого и грязного исправления, но я подозреваю, что вы ожидаете возвращения этим подзапросом, не возвращается, поэтому его исправление, вероятно, будет плохой идеей.

+0

У вас есть понимание того, как этот запрос должен быть написан? То, что я снимаю, - это просто конкатенация всех значений AssignedEmp, когда значения WorkOrderNumber совпадают – Hoser

Смежные вопросы