Mysql 正在尝试将where子句附加到sql语句
HiI正在尝试像这样将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
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);