If I understand correctly, you need a function that will produce what I think is called a Cartesian product from a table for specific fields. It is always from the same table, but the number of fields is variable. The following is VFP 6 code and I'm sure it can be improved, but it might be a good start. Bear in mind that the result set could be HUGE, especially as the number of fields grows.
If I'm wrong.......wasn't first time and won't be last
PARAMETERS tcTable,tcFields
N=ALINES(aFlds,STRTRAN(tcFields,',',CHR(13)))
lcSQL_1 = ""
lcSQL_2 = ""
FOR I = 1 TO N
lcSql_1 = lcSql_1 + ",c" + TRANS(I) + "." + aFlds[I]
lcSql_2 = lcSql_2 + "," + tcTable + " c" + TRANS(I)
ENDFOR
lcSQL = "SELECT " + SUBSTR(lcSql_1,2) + " FROM " + SUBSTR(lcSql_2,2)
&lcSql
>Hi All,
>
>I'm hoping someone can help me out here.
>
>I want to find out how I can generically obtain all the different combinations of group members. The trick is the number of groups is not set and neither is the number of group members.
>
>Example:
>
>A table has a group of name fields, could be one name, could be three or four names. The same table has a group of addresses, again could be one or two or three.
>
>I want to create a cursor that contains one record for each combination of name and address.
>
>Record 1: name1+address1
>Record 2: name2+address1
>Record 3: name3+address1
>Record 4: name1+address2
>Record 5: name2+address2
>Record 6: name3+address2
>
>If it were only name and address that would be alright, however the trick is to get it to work so that another group could be added, say company names and there are more one or more company names as well.
>
>In that case the cursor should look something like the following:
>
>Record 1: name1+company1+address1
>Record 2: name2+company1+address1
>Record 3: name3+company1+address1
>Record 4: name1+company2+address1
>Record 5: name2+company2+address1
>Record 6: name3+company2+address1
>Record 7: name1+company1+address2
>Record 8: name2+company1+address2
>Record 9: name3+company1+address2
>Record10: name1+company2+address2
>Record11: name2+company2+address2
>Record12: name3+company2+address2
>
>Aloha,
>
>James