2013-03-05 6 views
0

J'essaie simplement de concaténer les noms des employés dans un seul champ lorsque la valeur WorkOrderNumber d'une entrée est la même.Impossible de comprendre pourquoi cette requête ne s'exécute pas correctement

$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"; 

Chaque fois que je lance cette requête je reçois ce retour sur mon site:

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

Y at-il quelque chose que je suis absent?

Pour plus de précisions ... Je suis pour le tournage:

Disons que j'ai des données sous cette forme

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

Je voudrais interroger ces données et obtenir un résultat comme celui-ci .. .

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

Je ne suis pas sûr que MS Access le supporte mais SQL Server a la fonction 'FOR XML PATH'. Voir: http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server – JodyT

+0

J'ai essayé de travailler avec ça mais ça m'a donné des erreurs de syntaxe. Peut-être que cela ne le supporte pas – Hoser

+0

L'accès ne fonctionne pas. Vous ne pouvez certainement pas faire cela dans Access 2003 ou plus tôt et je suis sûr que vous ne pouvez pas le faire dans Access du tout (je pensais que les champs multivalués aideraient mais il ne semble pas qu'ils le feront) sans utiliser VBA. –

Répondre

2

C'est de retour plus d'un enregistrement:

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

qui ne va pas fonctionner. Vous pouvez lancer un TOP (1) dessus pour un correctif rapide et sale, mais je pense que ce que vous attendez d'être renvoyé par cette sous-requête n'est pas renvoyé, donc la corriger de cette façon serait probablement une mauvaise idée.

+0

Avez-vous un aperçu sur la façon dont cette requête devrait être écrite? Ce que je photographie est juste une concaténation de toutes les valeurs AssignedEmp lorsque les valeurs WorkOrderNumber correspondent – Hoser

Questions connexes