Guys,

without saying anything much, I have such data at hand (rows from a database table):

111 | xyz | a, b, c

Following someone's wise words, I would love to have this transformed to :

111 | xyz | a
111 | xyz | b
111 | xyz | c

DO NOT assume that there will be ONLY a single cell/column with multiple values.

The following might also arise :

111 | xyz, def | a, b, c

This has to be transformed to :

111 | xyz | a
111 | xyz | b
111 | xyz | c
111 | def | a
111 | def | b
111 | def | c

C++ code or suggestions would be great.. although I am interested in knowing more about ;

1. Working implementations/snippets
2. Alternative but automated or programmatic approaches to get equivalent output.
3. Links to other resources where I might get more answers to this question.. for example any good database experts forums you guys might know/heard about.. visit etc...

I am really looking forward to some help on this because I thought up a recursive solution to this problem but I got stuck when I found out that I would have to know and predefine the table schema and model an object/class/structure on it.. that would make my program not applicable for any table, but rather I would have to redefine and recompile the classes for the table schema for every table.

I am sure there are easier ways out.

3
Contributors
2
Replies
3
Views
10 Years
Discussion Span
Last Post by debasisdas

Yeah it seems like you need some sort of generic way to set up an arbitary number of nested for loops. Perhaps recursion of some sort.

//111 | xyz, def | a, b, c

#include <iostream>
#include <string>

using namespace std;

int main()
{

string array1[] = "111";
string array2[] = {"xyz", "def"};
string array3[] = {"a", "b", "c"};

for ( int i = 0; i < 1; i++ )
{
for ( int j = 0; j < 2; j++ )
{
for ( int k = 0; k < 3; k++ )
{
cout << array1[i] << " " << array2[j] << " " << array3[k] << endl;
}
}
}
cin.get();
}

I think hard coding it would be the simplest solution.

I don't think this question has anything to do with database designing.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.