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 .