try this:

SELECT PG1.*
FROM project_group_list AS PG1 LEFT JOIN project_group_list AS PG2
        ON PG1.ref_project_group_id = PG2.project_group_id
WHERE
        (PG1.root_project_group_id=10 AND PG1.inherit=1 AND PG2.inherit=1)
        OR (PG1.project_group_id=10)
        OR (PG1.ref_project_group_id=10)
ORDER BY PG1.node_depth

regards,
-----Original Message-----
From: Jakob Vedel Adeltoft [mailto:[EMAIL PROTECTED]
Sent: Friday, March 14, 2003 16:30
To: [EMAIL PROTECTED]
Subject: JOIN on same table


Hi there,
I have this table:

project_group_id                ref_project_group_id    name    root_project_group_id  
 node_depth
inherit
10      0       ProjectA        0       0       0
57      10      SubProjectA     10      1       1
59      57      SubProjectB     10      2       1
60      59      SubProjectC     10      3       0
62      60      SubProjectD     10      4       1

project_group_id (int) = primary key.
ref_project_group_id (int) = parent project (if root, then 0)
name (char) = name of project
root_project_group_id (int) = project_group_id for root project (if
root, then 0)
node_depth (int) = how far down in the tree this child is (if root, then
0)
inherit (int) = determines if this project inherit information from
parent (no=0, yes=1)

This would look somehting like this in a treeview:
        ProjectA (10)                                   <- node_depth =
0 (root)
                \
                SubProjectA (57)                                <-
node_depth = 1
                        \
                        SubProjectB (59)                        <-
node_depth = 2
                                \
                                SubProjectC (60)                <-
node_depth = 3
                                        \
                                        SubProjectD (62)        <-
node_depth = 4

I now wan't all child records (inclusive root) for ProjectA that inherit
information. This means that I only wan't records with project_group_id
= 10, 57, 59, because 60 is NOT inheriting and it's child project (62)
is then not able to inherit.

I've made the follwoing query:
SELECT PGL1.project_group_id, PGL1.ref_project_group_id, PGL1.name,
PGL1.permission_inherit, PGL1.node_depth, PGL1.root_project_group_id
FROM project_group_list PGL1
LEFT JOIN project_group_list PGL2 ON PGL1.root_project_group_id =
PGL2.root_project_group_id
WHERE PGL2.root_project_group_id = 10
AND PGL2.permission_inherit = 0
AND PGL1.node_depth < PGL2.node_depth
ORDER BY PGL1.node_depth

But this only gives me 57 and 59, but not 10 (root). This query also
have a problem, if all projects is inheriting and there is no records
with inherit=0, then the query returns no results.

What can I do to solve this problem? I hope someone can help me...

/Jakob


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to