Toon posts:

[(My)SQL] query kwestie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een tabel in een MySQL database; deze tabel bevat data over menu items. De tabel bevat een field met de naam parentID. Dit veld bevat optioneel een ID-int., dit is het ID van een andere row uit dezelfde(!) tabel.

De tabel;

code:
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `bo_tree` (
  `treeID` int(11) NOT NULL auto_increment,
  `treeName` varchar(255) NOT NULL default '',
  `parentID` int(5) NOT NULL default '0',
  `accountID` int(5) NOT NULL default '0',
  `permissionSet` set('administrator','servicemanager','contentmanager')
NOT NULL default '',
  `catID` int(5) NOT NULL default '0',
  `url` varchar(255) NOT NULL default '',
  KEY `treeID` (`treeID`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;


Kwestie;

Ik wil de tabel weergeven op een (php) pagina.
Echter, ik wil in plaats van het parentID de naam weergeven van de gekoppelde row (naam = field treeName.

Als het een koppeling was met een andere tabel was het geen probleem, dit doe ik namelijk ook al met het accountID (zie query).

Het is mij totaal onduidelijk hoe ik dit moet oplossen, mijn query tot nu toe volgt hieronder.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$bQuery =   "
                SELECT 
                        t1.treeID,
                        t1.treeName,
                        t1.parentID,
                        t1.permissionSet,
                        t1.url,
                        t2.accountName
                FROM
                        bo_tree AS t1,
                        bo_accounts AS t2
                WHERE
                        t1.accountID = t2.accountID
                ORDER BY
                        t1.accountID ASC, t2.accountName ASC
            ";


Weet iemand of hetgeen ik wil een naam heeft en waar ik zou kunnen vinden hoe ik dit op moet lossen? Ik zou het namelijk zelf niet weten; is de conclusie na enig zoekwerk.

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
wat je wil hebben is recursie...

Om een dergelijke tree te bouwen kun je afaik het beste aan applicatiekant een array bouwen en die met een recursieve functie doorlopen...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
faabman schreef op 19 juli 2004 @ 09:03:
wat je wil hebben is recursie...

Om een dergelijke tree te bouwen kun je afaik het beste aan applicatiekant een array bouwen en die met een recursieve functie doorlopen...
Het gaat mij niet om het bouwen van de tree zelf. Ik gebruik daar inderdaad, zoals je aangeeft, een array voor en stop dit (FYI) in een (sessie)array.

Wat ik aan het bouwen ben is een admin-tool, die alle tree-items weergeeft in een tabel. Waarbij ik graag, zonder extra query, de naam van het parent-item wil weergeven.

Is het mogelijk om de recursieve data op te halen binnen een en dezelfde query?

Verwijderd

Volgens mij niet...

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                SELECT
                        t1.treeID,
                        t1.treeName,
                        t1.parentID,
                        t1.permissionSet,
                        t1.url,
                        t2.accountName,
                        t3.treeName
                FROM
                        bo_tree AS t1,
                        bo_accounts AS t2
                LEFT JOIN bo_tree AS t3 ON t1.parentID = t3.treeID
                WHERE
                        t1.accountID = t2.accountID
                ORDER BY
                        t1.accountID ASC, t2.accountName ASC 


al vraag ik me wel af of MySQL Joins ondersteund...

[ Voor 11% gewijzigd door faabman op 19-07-2004 09:26 . Reden: ff de maandagochtend fouten verwijdert :O ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
faabman schreef op 19 juli 2004 @ 09:15:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                SELECT
                        t1.treeID,
                        t1.treeName,
                        t1.parentID,
                        t1.permissionSet,
                        t1.url,
                        t2.accountName
                        t3.treeName
                FROM
                        bo_tree AS t1,
                        bo_accounts AS t2
                WHERE
                        t1.accountID = t2.accountID
                LEFT JOIN bo_tree AS t3 ON t1.parentID = t3.treeID
                ORDER BY
                        t1.accountID ASC, t2.accountName ASC 


al vraag ik me wel af of MySQL Joins ondersteund...
Best briljant; daar het werkt!
Ben in een goede bui ;) , dus komt ie:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                SELECT
                        t1.treeID,
                        t1.treeName,
                        t1.parentID,
                        t1.permissionSet,
                        t1.url,
                        t2.treeName,
                        ac.accountName
                FROM
                        bo_tree AS t1
                LEFT JOIN
                        bo_tree AS t2 ON t1.parentID = t2.treeID
                LEFT JOIN
                        bo_accounts AS ac ON t1.accountID = ac.accountID


/me dankt faabman

Edit: query gewijzigd

[ Voor 20% gewijzigd door Verwijderd op 19-07-2004 10:38 ]

Pagina: 1