Tengo problemas cuando intento hacer un JOIN dentro una función recursive. Voy a pasar a describir las tablas primero:
tabla categories:
Código PHP:
CREATE TABLE `categories` (
`CatId` int(10) unsigned NOT NULL auto_increment,
`CatParentId` int(10) unsigned NOT NULL default '0',
`CatOrderSeq` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`CatId`),
KEY `Categories_FKIndex1` (`CatParentId`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;
#
# Dumping data for table `categories`
#
INSERT INTO `categories` VALUES (1, 0, 1);
INSERT INTO `categories` VALUES (2, 0, 2);
INSERT INTO `categories` VALUES (3, 0, 3);
INSERT INTO `categories` VALUES (4, 1, 1);
INSERT INTO `categories` VALUES (6, 1, 2);
INSERT INTO `categories` VALUES (7, 1, 3);
INSERT INTO `categories` VALUES (8, 2, 1);
INSERT INTO `categories` VALUES (9, 2, 2);
Código PHP:
CREATE TABLE `catlang` (
`LangId` int(10) unsigned NOT NULL default '0',
`CatId` int(10) unsigned NOT NULL default '0',
`CatLangName` varchar(45) NOT NULL default '',
PRIMARY KEY (`LangId`,`CatId`),
KEY `CatLang_FKIndex1` (`CatId`),
KEY `CatLang_FKIndex2` (`LangId`)
) TYPE=MyISAM;
#
# Dumping data for table `catlang`
#
INSERT INTO `catlang` VALUES (1, 1, 'a');
INSERT INTO `catlang` VALUES (1, 2, 'b');
INSERT INTO `catlang` VALUES (1, 3, 'c');
INSERT INTO `catlang` VALUES (1, 4, 'a1');
INSERT INTO `catlang` VALUES (1, 6, 'a2');
INSERT INTO `catlang` VALUES (1, 7, 'a3');
Código PHP:
// $parent es el padre de los niños que queremos ver
// $level es incrementado cuando vamos llendo más profundo en el árbol,
// usado para desplegar el árbol de una manera más leíble
function display_children($parent, $level) {
// recuperar todos los "hijos" de el $parent
$result = mysql_query("SELECT CatId FROM categories
WHERE CatParentId ='".$parent."'")or die(mysql_error());
//print "SELECT CatId FROM categories WHERE CatParentId =$parent<br>";
// para desplegar cada hijo
while ($row = mysql_fetch_array($result)) {
// indentar y desplegar el titulo del hijo
echo str_repeat(' ',$level).$row['CatId']."<br/>";
// se llama nuevamente esta función para desplegar el hijo del hijo
display_children($row['CatId'], $level+1);
}
}
display_children('',0);
?>
1
4
6
7
2
8
9
3
Bueno, hasta aquí todo funciona bien, pero el problema es cuando intento juntar esta tabla con la tabla catlang, no logro juntar los IDs (categories.CatId, catlang.CatId). He intentado con lo siguiente pero no me ha funcionado:
Código PHP:
$result = mysql_query("SELECT categories.CatId, catlang.CatLangName
FROM categories, catlang
WHERE categories.CatId ='".$parent."' AND catlang.CatId ='".$parent."'")or die(mysql_error());
Código PHP:
echo str_repeat(' ',$level).$row['CatId']."<br/>";
Código PHP:
echo str_repeat(' ',$level).$row['CatLangName']."<br/>";
a
a1
a2
a3
b
c
Agradezco cualquier ayuda.
Ratamaster