首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用内部联接sql查询从php中的两个以上组合参数中显示记录

问使用内部联接sql查询从php中的两个以上组合参数中显示记录
EN

Stack Overflow用户
提问于 2016-11-07 08:05:17
回答 1查看 91关注 0票数 0

我对PHP和SQL很陌生;我正在编写一个SQL查询,用以下逻辑显示记录:

  1. sql表中有9个单元格。我想使用3个参数的组合来搜索记录。这是两个日期之间的搜索、位置搜索和属性类别类型的搜索。
  2. 搜索标准如下所示:

日期:_________(日期选择器)-日期选择器(Till:______________) 销售代理:下拉( dehi,孟买,.) 手机:__________ (文本)

所需成果组合:

所有三个组合真-(用户填写日期,销售代理,移动)。

任何一个组合都是真实的。(用户只填充一个参数中的任何一个。)

只有两个组合是真实的。(用户填写两个参数组合,即日期和移动(或)移动和销售代理(或)销售代理和日期)

Problem:我不能只做一个组合。

下面是我的SQL查询和页面语法:

代码语言:javascript
复制
if(isset($_POST["submit"]))
{
    $date11=$_POST["date1"];
    $date22=$_POST["date2"];
    $salesagent1=$_POST["salesagent"];
    $mobile1=$_POST["mobile"];

    $result = "select 
                 ordertable.order_date, 
                 ordertable.order_id,
                 customer.cust_name, 
                 customer.cust_mobile,
                 customer.cust_email,
                 customer.cust_city,
                 ordertable.quantity, 
                 ordertable.total,
                 orderstatus.order_sta,
                 salesagent.name
               from customer inner join ordertable 
                 on customer.custid=ordertable.cust_id inner join salesagent 
                 on salesagent.said=ordertable.sales_id inner join orderstatus 
                 on orderstatus.id= (select order_statusid from orderhistory where order_id1= ordertable.order_id  order by date_added desc limit 1)                 
               where (ordertable.order_date between '$date11' and '$date22') or (customer.cust_mobile='$mobile1') or (ordertable.sales_id='$salesagent1') 
               order by ordertable.order_id desc";

    $records=mysqli_query($CON,$result);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-07 08:36:53

在每个参数为空时,将null或您选择的任何操作设置为:

代码语言:javascript
复制
$result = "select 
         ordertable.order_date, 
         ordertable.order_id,
         customer.cust_name, 
         customer.cust_mobile,
         customer.cust_email,
         customer.cust_city,
         ordertable.quantity, 
         ordertable.total,
         orderstatus.order_sta,
         salesagent.name
         from customer inner join ordertable 
         on customer.custid=ordertable.cust_id inner join salesagent 
         on salesagent.said=ordertable.sales_id inner join orderstatus 
         on orderstatus.id= (select order_statusid from orderhistory where order_id1= ordertable.order_id  order by date_added desc limit 1) 

        where ('$date11' IS NULL OR '$date22' IS NULL OR ordertable.order_date between '$date11' and '$date22') AND ('$mobile1' IS NULL OR customer.cust_mobile='$mobile1') AND ('$salesagent1' IS NULL OR ordertable.sales_id='$salesagent1') 
         order by ordertable.order_id desc";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40460416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档