2013-05-30 2 views
-1

Я хочу написать запрос выбора, где я должен пройти два идентификатора ввода и SourceID. Но вот твист, Идентификатор ввода - это mandetory, а SourceID - Необязательно. Я хочу написать запрос на выбор, где, если пользователь передает только входной идентификатор, тогда мой запрос выбора будет фильтровать данные на основе ID, но если пользователь передает оба ID и SourceID, тогда пользователь должен получить данные на основе обоих фильтров. Я в значительной степени новичок в запросе базы данных, поэтому я не могу понять, как это сделать?Как написать select Query в MySQL?

Мой запрос тела:

<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

Это не имеет особого смысла. Не могли бы вы привести пример неожиданного ввода и вывода? – symcbean

ответ

4

Попробуйте это,

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

Что это означает, что, когда NULL передается в SourceID1, значение, которое будет сравниваться с колонкой SourceID является значение самого столбца.

+0

Но это дает мне данные только в том случае, если я передаю оба ID и SourceID, если я отправлю только ID, тогда этот запрос не будет выполнен :( – Roy

+0

вам нужно передать 'NULL' вместо' SourceID1', если вы хотите фильтровать только по 'ID'. –

+0

Я прошел null, но его не работает :( – Roy

0
$id = "Your_ID1"; 
$SourceID1 = "Your_SourceID1"; 

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

    if($SourceID1){ 
     $query .= " AND SourceID = $SourceID1"; 
    } 
    $query .= ";"; 
} 
+0

Никто ничего не сказал о PHP;) – cypherabe