Mysql 正在尝试将where子句附加到sql语句

Mysql 正在尝试将where子句附加到sql语句,mysql,sql,where-clause,mysql-workbench,Mysql,Sql,Where Clause,Mysql Workbench,HiI正在尝试像这样将where子句附加到sql语句 public static DataTable paymentType(string paymenttype, string ddproviders, string overdue) { string paymenttypestr = ""; string ddproviderstr = ""; if (paymenttype != "") { p

HiI正在尝试像这样将where子句附加到sql语句

    public static DataTable paymentType(string paymenttype, string ddproviders, string overdue)
    { 

                string paymenttypestr = "";
    string ddproviderstr = "";


    if (paymenttype != "")
    {
        paymenttypestr = string.Format("AND membertomships.memberToMship_PayMethod = '{0}'", paymenttype);        

    }
    if (ddproviders != "")
    {
        ddproviderstr = string.Format("AND ddproviders.ddProvider_Name = '{0}'", ddproviders);

    }
    if (overdue == "OverDue-Now")
    { 
       string sql += @"WHERE memberpaysched.memberPaySched_dateDue < NOW() AND memberpaysched.memberPaySched_amountDue > memberpaysched.memberPaySched_amountPaid ";

    }

    string  sql = string.Format(
                @"SELECT    members.member_Id,
                   members.member_Lastname As Last_name,
                   members.member_Firstname AS First_name,
                   members.member_PostCode  As Post_Code, 
                   ddaccounts.ddAccount_DdReference As dd_reference,
                   ddproviders.ddProvider_Name As dd_providername,
                   memberToMship_ChargePerPeriod As monthly_amount,
                   mshiptypes.mshipType_Name As Membership_type,
                   mshipstatustypes.mshipStatusType_Name As Status,
                   membertomships.memberToMship_EndDate As Expiry_Date,
                   membertomships.memberToMship_PayMethod As payment_method
                   FROM members 
                   LEFT JOIN membertomships ON membertomships.member_Id = members.member_Id
                   LEFT JOIN memberpaysched ON memberpaysched.memberPaySched_memberId = members.member_Id
                   LEFT OUTER JOIN ddaccounts ON ddaccounts.member_Id = members.member_Id
                   LEFT OUTER JOIN  ddproviders ON  ddaccounts.ddProvider_Id=ddproviders.ddProvider_Id 
                   LEFT JOIN   mshipstatustypes ON mshipstatustypes.mshipStatusType_Id = membertomships.mshipStatusType_Id
                   LEFT JOIN   mshipoptions ON mshipoptions.mshipOption_Id = membertomships.mshipOption_Id
                   LEFT JOIN   mshiptypes ON mshiptypes.mshipType_Id = mshipoptions.mshipType_Id
                   WHERE       members.member_Active LIKE 'y%'
                   AND               mshipoptions.mshipOption_Period = 'month' 
                   AND               (mshipstatustypes.mshipStatusType_Id <> 5)
                   {0}
                   {1}     
                   ORDER BY members.member_Lastname",
                   paymenttypestr, ddproviderstr);
      return getdata(sql,mf);
    }
公共静态数据表paymentType(字符串paymentType、字符串ddproviders、字符串过期)
{ 
字符串paymenttypestr=“”;
字符串ddproviderstr=“”;
如果(paymenttype!=“”)
{
paymenttypestr=string.Format(“AND membertomships.memberToMship_PayMethod='{0}',paymenttype);
}
如果(ddproviders!=“”)
{
ddproviderstr=string.Format(“和ddproviders.ddProvider_Name='{0}',ddproviders);
}
如果(过期=“现在过期”)
{ 
字符串sql+=@“其中memberpaysched.memberpaysched_dateDuememberpaysched.memberpaysched_amountPaid”;
}
字符串sql=string.Format(
@“选择members.member\u Id,
members.member\u Lastname作为姓氏,
members.member_Firstname作为First_name,
members.member\u邮编作为邮政编码,
ddaccounts.ddAccount\u地址引用为dd\u引用,
ddproviders.ddProvider_名称作为dd_providername,
每个月的会员费金额,
mshiptypes.mshipType\u名称作为成员身份\u类型,
mshipstatustypes.mshipStatusType\名称作为状态,
MemberToShips.MemberToShip\u EndDate作为到期日,
membertomships.memberToMship\u付款方式作为付款方式
来自成员
在membertomships.member\u Id=members.member\u Id上左加入membertomships
LEFT JOIN memberpaysched ON memberpaysched.memberpaysched\u memberId=members.member\u Id
ddaccounts.member\u Id=members.member\u Id上的左外部联接ddaccounts
ddaccounts上的左外部联接ddproviders.ddProvider\u Id=ddproviders.ddProvider\u Id
在mshipstatustypes.mshipStatusType\u Id=membertomhips.mshipStatusType\u Id上左键加入mshipstatustypes
在mshipoptions.mshipOption\u Id=MemberToShips.mshipOption\u Id上左键加入mshipoptions
在mshiptypes.mshipType\u Id=mshipoptions.mshipType\u Id上左键连接mshiptypes
其中members.member\u处于活动状态,如“y%”
和mshipoptions.mshipOption_Period='month'
和(mshipstatustypes.mshipstatustypeu Id 5)
{0}
{1}     
按成员排序。成员\姓氏“,
付款类型STR、ddproviderstr);
返回getdata(sql,mf);
}
但它在这一行给出了错误,比如“;”这个符号是需要的

    string sql += @"WHERE memberpaysched.memberPaySched_dateDue < NOW() AND memberpaysched.memberPaySched_amountDue > memberpaysched.memberPaySched_amountPaid "; 
string sql+=@“其中memberpaysched.memberpaysched_dateDuememberpaysched.memberpaysched_amountPaid”;
如果过期==“现在过期”,我想添加此where子句

如何根据条件添加此where子句

有人能帮忙吗

Modified Query :   string sql += @"memberpaysched.memberPaySched_dateDue < NOW() AND memberpaysched.memberPaySched_amountDue > memberpaysched.memberPaySched_amountPaid";
Modified Query:string sql+=@“memberpaysched.memberpaysched\u dateDuememberpaysched.memberpaysched\u amountPaid”;
它仍然显示出这个错误
“无效表达式项+=”

乍一看,您有两个where子句。更改要添加到的,然后看看会发生什么。

我不是.NET专家,但我可能会更改:

if (overdue == "OverDue-Now")     
{
     string sql += @"WHERE memberpaysched.memberPaySched_dateDue < NOW() AND memberpaysched.memberPaySched_amountDue > memberpaysched.memberPaySched_amountPaid ";      
} 
if(过期==“现在过期”)
{
字符串sql+=@“其中memberpaysched.memberpaysched_dateDuememberpaysched.memberpaysched_amountPaid”;
} 
致:

if(过期==“现在过期”)
{
sql+=@“和memberpaysched.memberpaysched_dateDuememberpaysched.memberpaysched_amountPaid”;
} 
(即,删除字符串关键字,并将和替换为WHERE)

并将其放在主SQL块之后(即,您正在声明字符串SQL变量的位置)

那么,如果过期==“现在过期”,您正在声明一个SQL字符串并+=ing它?但是你会覆盖你认为你刚刚创建的字符串

我认为这就是你想要实现的目标:

if (overdue == "OverDue-Now")     
{
   string isoverduestr = @"AND memberpaysched.memberPaySched_dateDue < NOW() AND memberpaysched.memberPaySched_amountDue > memberpaysched.memberPaySched_amountPaid ";      
}
else
{
   string isoverduestr = @"";
}

string  sql = string.Format(
            @"SELECT    members.member_Id,
               members.member_Lastname As Last_name,
               members.member_Firstname AS First_name,
               members.member_PostCode  As Post_Code, 
               ddaccounts.ddAccount_DdReference As dd_reference,
               ddproviders.ddProvider_Name As dd_providername,
               memberToMship_ChargePerPeriod As monthly_amount,
               mshiptypes.mshipType_Name As Membership_type,
               mshipstatustypes.mshipStatusType_Name As Status,
               membertomships.memberToMship_EndDate As Expiry_Date,
               membertomships.memberToMship_PayMethod As payment_method
               FROM members 
               LEFT JOIN membertomships ON membertomships.member_Id = members.member_Id
               LEFT JOIN memberpaysched ON memberpaysched.memberPaySched_memberId = members.member_Id
               LEFT OUTER JOIN ddaccounts ON ddaccounts.member_Id = members.member_Id
               LEFT OUTER JOIN  ddproviders ON  ddaccounts.ddProvider_Id=ddproviders.ddProvider_Id 
               LEFT JOIN   mshipstatustypes ON mshipstatustypes.mshipStatusType_Id = membertomships.mshipStatusType_Id
               LEFT JOIN   mshipoptions ON mshipoptions.mshipOption_Id = membertomships.mshipOption_Id
               LEFT JOIN   mshiptypes ON mshiptypes.mshipType_Id = mshipoptions.mshipType_Id
               WHERE       members.member_Active LIKE 'y%'
               AND               mshipoptions.mshipOption_Period = 'month' 
               AND               (mshipstatustypes.mshipStatusType_Id <> 5)
               {0}
               {1}
               {2}     
               ORDER BY members.member_Lastname",
               paymenttypestr, ddproviderstr, isoverduestr);
if(过期==“现在过期”)
{
字符串isoverduestr=@“和memberpaysched.memberpaysched_dateDuememberpaysched.memberpaysched_amountPaid”;
}
其他的
{
字符串isoverduestr=@”;
}
字符串sql=string.Format(
@“选择members.member\u Id,
members.member\u Lastname作为姓氏,
members.member_Firstname作为First_name,
members.member\u邮编作为邮政编码,
ddaccounts.ddAccount\u地址引用为dd\u引用,
ddproviders.ddProvider_名称作为dd_providername,
每个月的会员费金额,
mshiptypes.mshipType\u名称作为成员身份\u类型,
mshipstatustypes.mshipStatusType\名称作为状态,
MemberToShips.MemberToShip\u EndDate作为到期日,
membertomships.memberToMship\u付款方式作为付款方式
来自成员
在membertomships.member\u Id=members.member\u Id上左加入membertomships
LEFT JOIN memberpaysched ON memberpaysched.memberpaysched\u memberId=members.member\u Id
ddaccounts.member\u Id=members.member\u Id上的左外部联接ddaccounts
ddaccounts上的左外部联接ddproviders.ddProvider\u Id=ddproviders.ddProvider\u Id
在mshipstatustypes.mshipStatusType\u Id=membertomhips.mshipStatusType\u Id上左键加入mshipstatustypes
在mshipoptions.mshipOption\u Id=MemberToShips.mshipOption\u Id上左键加入mshipoptions
左连接mshiptyp
if (overdue == "OverDue-Now")     
{
   string isoverduestr = @"AND memberpaysched.memberPaySched_dateDue < NOW() AND memberpaysched.memberPaySched_amountDue > memberpaysched.memberPaySched_amountPaid ";      
}
else
{
   string isoverduestr = @"";
}

string  sql = string.Format(
            @"SELECT    members.member_Id,
               members.member_Lastname As Last_name,
               members.member_Firstname AS First_name,
               members.member_PostCode  As Post_Code, 
               ddaccounts.ddAccount_DdReference As dd_reference,
               ddproviders.ddProvider_Name As dd_providername,
               memberToMship_ChargePerPeriod As monthly_amount,
               mshiptypes.mshipType_Name As Membership_type,
               mshipstatustypes.mshipStatusType_Name As Status,
               membertomships.memberToMship_EndDate As Expiry_Date,
               membertomships.memberToMship_PayMethod As payment_method
               FROM members 
               LEFT JOIN membertomships ON membertomships.member_Id = members.member_Id
               LEFT JOIN memberpaysched ON memberpaysched.memberPaySched_memberId = members.member_Id
               LEFT OUTER JOIN ddaccounts ON ddaccounts.member_Id = members.member_Id
               LEFT OUTER JOIN  ddproviders ON  ddaccounts.ddProvider_Id=ddproviders.ddProvider_Id 
               LEFT JOIN   mshipstatustypes ON mshipstatustypes.mshipStatusType_Id = membertomships.mshipStatusType_Id
               LEFT JOIN   mshipoptions ON mshipoptions.mshipOption_Id = membertomships.mshipOption_Id
               LEFT JOIN   mshiptypes ON mshiptypes.mshipType_Id = mshipoptions.mshipType_Id
               WHERE       members.member_Active LIKE 'y%'
               AND               mshipoptions.mshipOption_Period = 'month' 
               AND               (mshipstatustypes.mshipStatusType_Id <> 5)
               {0}
               {1}
               {2}     
               ORDER BY members.member_Lastname",
               paymenttypestr, ddproviderstr, isoverduestr);