如何组合SQL查询的结果集?

时间:2010-08-03 06:49:07

标签: php sql mysql html

我有5个复选框,包含鸡肉,水果,蔬菜,零食等食品。

我想要实现的是当用户选择复选框项目并点击提交时,它将搜索提供所选项目的餐馆,

表格将包含2个字段:restid,menu和数据存储在表

restid->1, menu->chicken
restid->1, menu->Burger
restid->2, menu->fruits
restid->3, menu->chicken

我怀疑如何搜索餐桌上的餐馆。我的计划是,使用select语句遍历每个项目的for循环,例如(select * from restaurant_table where menu ='menu';)

当我们循环循环时,我们如何组合每个菜单的结果?

Plz帮助任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

我希望你有两个餐厅和菜单

restaurant - restid,name

菜单 - menuid,restid,菜单

php代码可以像这样

<?php 
     //$_POST['menus'] is the array of checkboxes
     foreach($_POST['menus'] as $menu)
     {
        if($menu) $selected[]=intval($menu);
     }
     $selectedlist=implode(",",$selected);

    //The SQL Query
    $query="SELECT name from restaurant WHERE menu in(".$selectedlist.")";
    $record=mysql_fetch_array(mysql_query($query)); //Loop this to get more records
?>

希望这很有用

答案 1 :(得分:1)

下面的查询将返回菜单上同时包含鸡汉堡的餐馆的restid - 假设restaurant_table没有重复的行。

SELECT restid, COUNT(*) as cnt
FROM restaurant_table
WHERE menu IN ('chicken', 'burger')
GROUP BY restid
HAVING COUNT(*) = 2

答案 2 :(得分:0)

也许这可以帮助你作为起点:

$where = " 1=1 ";

if ( $_POST["chicken"] ) 
$where = $where . " AND menu = 'chicken' ";

if ( $_POST["Burger"] ) 
$where = $where . " AND menu = 'Burger' ";

if ( $_POST["fruits"] ) 
$where = $where . " AND menu = 'fruits' ";

$sql = "SELECT * FROM restaurants WHERE " + $where;