Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^3: Generating a Hash of Hashes Recursively to Display Database Hierarchy

by ikegami (Patriarch)
on Jun 23, 2009 at 16:23 UTC ( [id://774096]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Generating a Hash of Hashes Recursively to Display Database Hierarchy
in thread Generating a Hash of Hashes Recursively to Display Database Hierarchy

I dare say your join is broken and that's what should be fixed. But it's easy to work with it anyway.

You have:

my $data = [ [ 'parent1', 'child1a', 'child2a', undef, ], [ 'parent1', 'child1b', 'child2b', 'child3b',], [ 'parent1', 'child1c', undef, undef,], ];

You want:

my $data = [ [ 'parent1', 'child1a' ], [ 'parent1', 'child2a' ], [ 'parent1', 'child1b' ], [ 'parent1', 'child2b' ], [ 'parent1', 'child3b' ], [ 'parent1', 'child1c' ], ];

Easy! Change

while (my $row = $sth->fetch()) { my ($id, $parent_id) = @$row; ... }

to

while (my $row = $sth->fetch()) { my ($parent_id, @children_ids) = @$row; for my $id (grep defined, @children_ids) { ... } }

Replies are listed 'Best First'.
Re^4: Generating a Hash of Hashes Recursively to Display Database Hierarchy
by c4onastick (Friar) on Jun 23, 2009 at 16:59 UTC

    Ah, my apologies! My short hand with $data got a little too short! $data really looks like this:

    my $data = [ [ 'parent1', 'child1', 'grand_child1', undef, ], [ 'parent1', 'child2', 'grand_child2', 'great_grand_child1',], [ 'parent1', 'child3', undef, undef,], ];

    Or:

    my $data = [ [ 'parent1', 'child1' ], [ 'child1', 'grand_child1' ], [ 'parent1', 'child2' ], [ 'child2', 'grand_child2' ], [ 'grand_child2', 'great_grand_child2' ], [ 'parent1', 'child1c' ], ];

    But because of our extended table structure, I'm sure how I can (easily) make it look like the second form though.

      With the top:

      while (my $row = $sth->fetch()) { for (1..$#$row) { my ($parent_id, $id) = @{$row}[$i-1, $i-0]; last if !defined($id); ... } }

      With the bottom:

      while (my $row = $sth->fetch()) { my ($parent_id, $id) = @$row; ... }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://774096]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2024-04-24 17:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found