2017-09-02 5 views
0

J'essaie d'avoir un tableau à 2 dimensions dans ColdFusion ou un dictionnaire.2 Dimension Array dans ColdFusion

Je lis de la base de données:

<cfquery name="getData" datasource="myDB"> 
    Select Name, Score From Customer 
</cfquery> 

J'ai une boucle dans cette requête. Ma requête renverra 6 dossiers comme celui-ci:

Test1, 3 
Test2, 0 
Test1, 1 
Test3, 1 
Test3, 3 
Test2, 0 

Je voudrais avoir ces données dans un tableau/dictionnaire où les noms ne répéterons pas les scores seront ajoutés. Dans ce cas, trois tableaux de deux dimensions:

myArray(Test1, 4) 
myArray(Test2, 0) 
myArray(Test3, 4) 

Est-ce possible dans ColdFusion?

Merci

Répondre

2

S'il n'y a pas de raison particulière d'utiliser un tableau, vous pouvez également utiliser un Struct.

Cela ressemblerait à ce qui suit:

<cfset myStruct = {} > 
<cfloop query="getData"> 
    <cfif NOT StructKeyExists(myStruct,Name)> 
    <cfset myStruct[Name] = [] > 
    </cfif> 
    <cfset ArrayAppend(myStruct[Name],score) > 
</cfloop> 
+0

Semble plus compliqué que nécessaire. –

2

Vous pouvez toujours changer votre requête:

select name, sum(score) totalScore 
from customer 
group by name 

Ou, si vous avez besoin réellement les dossiers individuels, vous pouvez faire une requête de requêtes.

+0

Merci. En fait, parfois, je dois lire les données à partir d'un fichier texte au lieu d'une requête. – user6824563