Joins (Opgelost)
Rens - 27/02/2007 23:27
Crew algemeen
Beste,
Ik heb de volgende SQL code:
SELECT
menu_cats.view AS mc_view,
menu_cats.level AS mc_level,
menu_cats.naam AS mc_naam,
menu_links.view AS ml_view,
menu_links.level AS ml_level,
menu_links.link AS ml_link,
menu_links.naam AS ml_naam
FROM
menu_links
RIGHT JOIN
menu_cats
ON
(menu_cats.id = menu_links.cat)
SELECT
menu_cats. view AS mc_view,
menu_cats. level AS mc_level,
menu_cats. naam AS mc_naam,
menu_links. view AS ml_view,
menu_links. level AS ml_level,
menu_links
. link AS ml_link
, menu_links. naam AS ml_naam
FROM
menu_links
menu_cats
ON
( menu_cats. id = menu_links. cat)
En ik zou iets als dit willen krijgen:
Citaat:
Menu
- Begin
- Contact
Maar ik krijg dit:
Citaat:
Menu
- Begin
Menu
- Contact
Kan iemand me vertellen wat ik verkeerd doe?
Ben nu net met joins begonnen, en snap het nog niet helemaal
4 antwoorden
Gesponsorde links
MindPrison - 27/02/2007 23:36
PHP gevorderde
Ik zou alvast even sorteren op categorie id. Eigelijk kan dit toch perfect (beter zelf) zonder JOINS? Hier is het alvast nog met join:
SELECT c.view AS mc_view, c.level AS mc_level, c.naam AS mc_naam, l.view AS ml_view, l.level AS ml_level, l.link AS ml_link, l.naam AS ml_naam FROM menu_links l RIGHT JOIN menu_cats c ON c.id = l.cat ORDER BY c.id ASC
SELECT c
. view
AS mc_view
, c
. level
AS mc_level
, c
. naam
AS mc_naam
, l
. view
AS ml_view
, l
. level
AS ml_level
, l
. link AS ml_link
, l
. naam
AS ml_naam FROM menu_links l RIGHT
JOIN menu_cats c ON c
. id
= l
. cat ORDER BY c
. id ASC
Nu moet je alleen nog groeperen met behulp van PHP...
webstab - 28/02/2007 13:57
PHP ver gevorderde
Kan je er geen GROUP BY bij betrekken?
Ibrahim - 28/02/2007 13:59
PHP expert
de join query is correct, alleen het weergeven in PHP gaat volgens mij verkeerd bij jou.
while( ... )
{
echo $hoofd . '<br />';
echo $sub . '<br />';
}
zo doe jij het vast ?
Rens - 28/02/2007 14:00 (laatste wijziging 28/02/2007 15:55)
Crew algemeen
Ja, zo deed ik het inderdaad.
Maar het probleem is opgelost, ben nu alleen niet thuis, dus ik kan niet laten zien welke code ik gebruikt heb.
Zal het er even bij zetten als ik thuis ben
Bij deze mijn code:
<?PHP
$sQueryMenu = "
SELECT
menu_cats.view AS mc_view,
menu_cats.level AS mc_level,
menu_cats.naam AS mc_naam,
menu_cats.id AS mc_id,
menu_links.view AS ml_view,
menu_links.level AS ml_level,
menu_links.link AS ml_link,
menu_links.naam AS ml_naam
FROM
menu_links, menu_cats
WHERE
menu_cats.id = menu_links.cat";
$rResultMenu = $oMySQL->query($sQueryMenu);
$iCatId = 0;
while($aFetchMenu = MySQL_Fetch_Assoc($rResultMenu))
{
if($oToegang->check($aFetchMenu['mc_level'], $aFetchMenu['mc_view'], (IsSet($_SESSION['id']) ? $aLeden['level'] : 0)))
{
if($iCatId != $aFetchMenu['mc_id'])
{
if(IsSet($bNext) && $bNext)
{
$oTpl->newBlock("MENU_ROW_MARGIN");
}
$oTpl->newBlock("MENU");
$oTpl->newBlock("MENU_HEAD");
$oTpl->assign("MENU_HEAD_TITLE", $aFetchMenu['mc_naam']);
$iCatId = $aFetchMenu['mc_id'];
}
if($oToegang->check($aFetchMenu['ml_level'], $aFetchMenu['ml_view'], (IsSet($_SESSION['id']) ? $aLeden['level'] : 0)))
{
$oTpl->newBlock("MENU_ROW");
$oTpl->assign(array(
"MENU_ROW_PAGE" => $aFetchMenu['ml_link'],
"MENU_ROW_LINK" => $aFetchMenu['ml_naam']
));
}
}
$bNext = true;
}
<?PHP
$sQueryMenu = "
SELECT
menu_cats.view AS mc_view,
menu_cats.level AS mc_level,
menu_cats.naam AS mc_naam,
menu_cats.id AS mc_id,
menu_links.view AS ml_view,
menu_links.level AS ml_level,
menu_links.link AS ml_link,
menu_links.naam AS ml_naam
FROM
menu_links, menu_cats
WHERE
menu_cats.id = menu_links.cat" ;
$rResultMenu = $oMySQL -> query ( $sQueryMenu ) ;
$iCatId = 0 ;
{
if ( $oToegang -> check ( $aFetchMenu [ 'mc_level' ] , $aFetchMenu [ 'mc_view' ] , ( IsSet ( $_SESSION [ 'id' ] ) ?
$aLeden [ 'level' ] : 0 ) ) ) {
if ( $iCatId != $aFetchMenu [ 'mc_id' ] )
{
if ( IsSet ( $bNext ) && $bNext ) {
$oTpl -> newBlock ( "MENU_ROW_MARGIN" ) ;
}
$oTpl -> newBlock ( "MENU" ) ;
$oTpl -> newBlock ( "MENU_HEAD" ) ;
$oTpl -> assign ( "MENU_HEAD_TITLE" , $aFetchMenu [ 'mc_naam' ] ) ;
$iCatId = $aFetchMenu [ 'mc_id' ] ;
}
if ( $oToegang -> check ( $aFetchMenu [ 'ml_level' ] , $aFetchMenu [ 'ml_view' ] , ( IsSet ( $_SESSION [ 'id' ] ) ?
$aLeden [ 'level' ] : 0 ) ) ) {
$oTpl -> newBlock ( "MENU_ROW" ) ;
"MENU_ROW_PAGE" => $aFetchMenu [ 'ml_link' ] ,
"MENU_ROW_LINK" => $aFetchMenu [ 'ml_naam' ]
) ) ;
}
}
$bNext = true ;
}
Gesponsorde links
Dit onderwerp is gesloten .