如何使用WHERE子句中同一列的多个值?

时间:2019-01-16 06:04:09

标签: php mysql

我目前有一张保存地区信息的表。区域如下:

  • 全州-2个结果
  • 北部-4个结果
  • 南部-4个结果
  • 东部-3个结果
  • 西部-7个结果

当前,当用户选择Statewide时,他们将从Statewide获得结果。但是从逻辑上讲,如果也从所有其他区域显示结果,则更有意义,因为它们是该州的一部分。目前,它仅显示 2个结果,但应显示 20个结果

此外,如果有人选择“东部”,他们应该从“地区+全州”名称中查看结果。因此,如果有人选择东部,则结果应来自东部+全州。当前显示的是 3个结果,而不是 5个结果

有人可以帮我吗?您的帮助将不胜感激。

我尝试了AND,OR,XOR和UNION语句,但是它们似乎都不起作用。

if (!empty($region_name)) {

            if($region_name !== 'Statewide'){
                $venueArray[] = " AND (REGION = '$region_name' ) XOR ( REGION = '$statewide')";
            }else if($region_name == 'Statewide'){
                $venueArray[] = " AND (REGION = '$region_name' ) XOR ( REGION != '$statewide')";
            } else{
                $venueArray[] = " AND (REGION = '$region_name')";
            }

        }

第1-10行/search.php

2 个答案:

答案 0 :(得分:1)

当区域名称为Statewide时,您需要所有结果(因此不需要任何条件),否则,您希望区域和Statewide结果,因此您的{{ 1}}可以简化为:

if

请注意括号中的更改,以确保此条件在运算符优先级方面可以与其他条件很好地兼容。

答案 1 :(得分:0)

对不起,我对php不太了解,所以我为您提供SQL查询解决方案,这可能会对您的结果有所帮助。

Declare @region_name varchar(20)
set @region_name = 'North'  /*You can pas any state here*/

Select * 
from tbl_region
Where (
   (@region_name = 'StateWide' And 1=1)   /*it selects all record in the table*/
     And 
   (region_name = @region_name or region_name = 'Statewide') /*it retrieves records for passed region name and statewide*/
  )