我想编写一个select查询,其中用户必须传递两个输入ID和SourceID。 但这是扭曲,输入ID是mandetory,SourceID是可选的。 我想写一个选择查询,如果用户只传递输入ID,那么我的选择查询将根据ID过滤数据,但如果用户同时传递ID和SourceID,则用户应根据两个过滤器获取数据。 我几乎是数据库查询的新手,所以我无法弄清楚如何做到这一点?
我的要求机构:
<body>
<p:GetEntryByID xmlns:p="http://abcFarm.org/">
<!--Exactly 1 occurrence-->
<xs:ExistingID xmlns:xs="http://abcFarm.org/">?</xs:ExistingID>
<!--0 to 1 occurrence-->
<xs:TargetSourceID xmlns:xs="http://abcFarm.org/">?</xs:TargetSourceID>
</p:GetEntryByID >
</body>
我编写的sql查询无法正常工作:
select * from entry WHERE ID='ID1' AND (e.SourceID='SourceID1' Or ID='ID1');
但这并不能满足我的上述需要。 请帮助。谢谢。
答案 0 :(得分:4)
试试这个,
SELECT *
FROM entry
WHERE ID = 'ID1' AND
SourceID = COALESCE('SourceID1', SourceID)
这意味着当NULL
中传递SourceID1
时,与列SourceID
进行比较的值就是列本身的值。
答案 1 :(得分:0)
$id = "Your_ID1";
$SourceID1 = "Your_SourceID1";
if($id){
$query = "select * from entry WHERE ID=$id";
if($SourceID1){
$query .= " AND SourceID = $SourceID1";
}
$query .= ";";
}