我目前有一张保存地区信息的表。区域如下:
当前,当用户选择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
答案 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*/
)