【问题标题】:How to combine result sets of a sql query?如何组合 sql 查询的结果集?
【发布时间】:2010-08-03 06:49:07
【问题描述】:

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

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

表格将有2个字段:restid,菜单,数据在表格中是这样存储的

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

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

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

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

【问题讨论】:

  • 我无法理解这个问题。 “结合每个菜单的结果”是什么意思?如果您执行SELECT restid FROM restaurant_table WHERE menu='foo',您将获得每家供应 foo 的餐厅的 ID。如果您想搜索不止一件事,请执行 SQL INTERSECTAND
  • 由于 Shrapnel 上校亲切指出的明显缺陷,我的回答被撤回了。

标签: php sql mysql html


【解决方案1】:

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

餐厅 - restid,名称

menu - 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
?>

希望对你有用

【讨论】:

  • 返回同时选择菜单 (AND) 还是存在单个菜单 (OR) 的餐厅
  • @Raja 你有多少张桌子?单人?还是两个,正如 sirinvas 所建议的那样?
  • 我有一张带restid和菜单的餐桌
  • @Rajasekar 最好像我提到的那样对表格进行规范化,或者您可以按照您提到的单个表格使用它,但我更喜欢使用两个表格。并且代码返回所选菜单的餐厅(AND)
【解决方案2】:

下面的查询将为您返回菜单上有鸡肉汉堡的餐厅的restids - 假设 restaurant_table 没有重复的行。

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

【讨论】:

  • 可以使用count(distinct menu)而不是count(*)来处理重复行。
【解决方案3】:

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

$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;

【讨论】:

  • 您的查询会找到任何行吗?
猜你喜欢
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 2018-08-28
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多