[SQL] Sibblings selecteren uit een parent -> child tabel

Pagina: 1
Acties:

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Topicstarter
Er is een tabel met de volgende layout:
code:
1
2
3
+-----------+------------+
| parent_id | child_id   |
+-----------+------------+
Ik heb een array A met child_id's. Nu wil ik met sql voor elkaar krijgen (en daarna wat standaard php, maar dat is het probleem niet) dat ik een array B krijg die de relatie child->sibling(n) laat zien van alle children uit die array A. B bevat dus alle siblings van de id's in A met het bijbehorende child uit A:
PHP:
1
Array( [n], Array( child(A), child(-) ) );

Ik heb het volgende tot nu toe, maar dit geeft niet de gewenste recordset:
PHP:
1
2
3
4
5
6
7
8
9
10
11
$query = "
SELECT    B.child_id AS child,
          A.child_id AS sibling
FROM      A,
          (SELECT child_id,
                  parent_id
           FROM   A
           WHERE  (child_id = ".implode(' OR child_id = ', $children).")
          ) B
          WHERE B.parent_id = A.parent_id AND NOT (A.child_id = "
                              .implode(' OR A.child_id = ', $children).")";


Heeft iemand enig idee wat ik fout doe? Of doe ik te moeilijk en kan dit makkelijker?

[ Voor 5% gewijzigd door Jurgle op 12-01-2006 10:21 ]

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Topicstarter
Ik heb gelukkig inmiddels zelf een oplossing gevonden. Voor mensen die ooit hetzelfde probleem hebben:

PHP:
1
2
3
4
5
6
7
8
$query = "SELECT b.child_id AS child,
a.child_id AS sibling

FROM A AS a
JOIN A AS b

WHERE a.parent_id = b.parent_id AND a.child_id != b.child_id\
AND (b.child_id = ".implode(' OR b.child_id = ', $children).")";

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant