2015-11-03 99 views
0

我只是一个业余的脚本编码。我需要帮助从有人在这里.. 我有麻烦在这里,我试图表明2条件从我的代码合并,看看这里,请...从2查询合并2条件数组1

<ul class="nav navbar-nav"> 
 
    <?php    
 
    $main=mysql_query("SELECT * FROM mainmenu WHERE aktif='Y'"); 
 
    while($r=mysql_fetch_array($main)){ 
 
    $t=$r['']; 
 
    $tm="<a href='$r[link]' class='dropdown-toggle' data-toggle='dropdown' role='button' aria-expanded='false'>$r[nama_menu]<span class='caret'></span></a>"; 
 
    $th="<a href='$r[link]'>$r[nama_menu]</a>"; 
 
    if ($t!= ""){ 
 
    $tombol=$th; 
 
    }else{ 
 
    $tombol=$tm; 
 
    } 
 
    echo "<li class='dropdown'>$tombol 
 
     <ul class='dropdown-menu' role='menu'>"; 
 
    \t $sub=mysql_query("SELECT * FROM submenu, mainmenu 
 
     WHERE submenu.id_main=mainmenu.id_main 
 
     AND submenu.id_main=$r[id_main]"); 
 
    \t while($w=mysql_fetch_array($sub)){ 
 
    echo " <li><a href='$w[link_sub]'>$w[nama_sub]</a></li>"; 
 
    \t } 
 
    echo "</ul></li>";} 
 
    ?> 
 
</ul>

我已经把它分解以尝试在任何条件下展示他们,而这更相关,但我不能合并它,我不知道我有什么做,请看这个请

这是第一个条件 - >

<ul class="nav navbar-nav"> 
 
<?php    
 
    $main=mysql_query("SELECT DISTINCT a.* FROM mainmenu a 
 
    INNER JOIN submenu b ON a.id_main = b.id_main AND a.aktif = 'Y'"); 
 
    while($r=mysql_fetch_array($main)){ 
 
    echo "<li class='dropdown'><a href='$r[link]' class='dropdown-toggle' data-toggle='dropdown' role='button' aria-expanded='false'>$r[nama_menu]<span class='caret'></span></a><ul class='dropdown-menu' role='menu'>"; 
 
    $sub=mysql_query("SELECT * FROM submenu, mainmenu 
 
    WHERE submenu.id_main=mainmenu.id_main 
 
    AND submenu.id_main=$r[id_main]"); 
 
    while($w=mysql_fetch_array($sub)){ 
 
    echo " <li><a href='$w[link_sub]'>$w[nama_sub]</a></li>"; 
 
    } 
 
    echo "</ul></li>";} 
 
?> 
 
</ul>

而且Thise第二个条件 - >

<ul class="nav navbar-nav"> 
 
<?php  
 
    $menu=mysql_query("SELECT DISTINCT a.* FROM mainmenu a 
 
    LEFT OUTER JOIN submenu b ON a.id_main = b.id_main WHERE b.id_main is null AND a.aktif = 'Y'"); 
 
    while($s=mysql_fetch_array($menu)){ 
 
    echo "<li class='dropdown'><a href='$s[link]'>$s[nama_menu]</a></li>";} ?> 
 
</ul>

我想什么时候合并内与LEFT OUTER JOIN JOIN是:

if (bla, bla, bla){ 
 
echo "Show INNER JOIN"; 
 
}else{ 
 
echo "Show LEFT OUTER JOIN"; 
 
}

回答

0

也许有人需要这样的东西,当他会做出不同的菜单,当他们的菜单有一些菜单子菜单.... 终于我找到了这样的解决方案。

而这是脚本:

<ul class="nav navbar-nav"> 
 
      <?php    
 
     $main=mysql_query("SELECT * FROM mainmenu WHERE aktif='Y'"); 
 
\t \t while($r=mysql_fetch_array($main)){ 
 
\t \t $main2=mysql_query("SELECT id_main FROM submenu WHERE submenu.id_main=$r[id_main] "); 
 
\t \t ($s=mysql_fetch_array($main2)); 
 
\t \t if ($r['id_main'] == $s['id_main']){ 
 
     $tombol="<a href='$r[link]' class='dropdown-toggle' data-toggle='dropdown' role='button' aria-expanded='false'>$r[nama_menu]<span class='caret'></span></a>"; 
 
     }else{ 
 
     $tombol="<a href='$r[link]'>$r[nama_menu]</a>"; 
 
     } 
 
\t   echo "<li class='dropdown'>$tombol 
 
        <ul class='dropdown-menu' role='menu'>"; 
 
\t   $sub=mysql_query("SELECT * FROM submenu, mainmenu 
 
          WHERE submenu.id_main=mainmenu.id_main 
 
          AND submenu.id_main=$r[id_main]"); 
 
\t   while($w=mysql_fetch_array($sub)){ 
 
       echo " <li><a href='$w[link_sub]'>$w[nama_sub]</a></li>"; 
 
\t   } 
 
\t  echo "</ul> 
 
      </li>";} ?> 
 
</ul>

0

通常当两个查询使用相同的表,它是使用OR加入两组条件一件简单的事情。但是在这种情况下,一个查询有JOIN,另一个查询有LEFT OUTER JOIN

我认为你可以使用UNION这样的:

SELECT DISTINCT a.* 
FROM mainmenu a 
INNER JOIN submenu b ON a.id_main = b.id_main AND a.aktif = 'Y' 
UNION 
SELECT DISTINCT a.* 
FROM mainmenu a 
LEFT OUTER JOIN submenu b ON a.id_main = b.id_main 
WHERE b.id_main is null AND a.aktif = 'Y' 

也许你可以rewite它:

SELECT DISTINCT a.* 
FROM mainmenu a 
LEFT OUTER JOIN submenu b ON a.id_main = b.id_main OR b.id_main is null 
WHERE a.aktif = 'Y' 

无采样数据&结果我无法测试并确认你。

+0

我想我需要阵列的2结果打印INNER JOIN和LEFT OUTER JOIN在不同 INNER有另一个

,和外部没有..但是,谢谢你的答案..我会尝试在我的本地.. –