-1

我想编写一个选择查询,我的用户必须传递两个输入 ID 和 SourceID。但这里有一个转折点,输入 ID 是强制性的,而 SourceID 是可选的。我想编写一个选择查询,如果用户仅通过 Input ID 那么我的选择查询将根据 ID 过滤数据,但如果用户同时通过 ID 和 SourceID 那么用户应该 Get Data based on Both Filters。我对数据库查询非常陌生,所以我无法弄清楚如何做到这一点?

我的请求正文:

<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');

但这并不能满足我的上述需求。请帮助。在此先感谢。

4

2 回答 2

4

尝试这个,

SELECT * 
FROM   entry 
WHERE  ID = 'ID1' AND 
       SourceID = COALESCE('SourceID1', SourceID)

意思是当NULL传入时SourceID1,与columnSourceID比较的值就是column本身的值。

于 2013-05-30T14:49:05.723 回答
0
$id = "Your_ID1";
$SourceID1 = "Your_SourceID1";

if($id){
    $query = "select * from entry WHERE ID=$id";

    if($SourceID1){
        $query .= " AND SourceID = $SourceID1";
    }
    $query .= ";";
}
于 2013-05-30T14:58:31.787 回答