Reputation: 3986
I have the following SQL query:
SELECT
ts.id, t.id, t.name
FROM
table1 ts
INNER JOIN
tabble2 t ON ts.ta = t.ta
AND CASE
WHEN :var1 = 0 THEN ts.id = :var1
ELSE ts.id = :var1 AND ts.em = :var2
END
ORDER BY
ts.id DESC;
var1
and var2
are variables I'm passing from code.
Is there something wrong with that query? For some reason it doesn't seem to provide the correct results.
Upvotes: 0
Views: 37
Reputation: 82504
I would probably write it like this:
SELECT ts.id, t.id, t.name
FROM table1 ts
INNER JOIN tabble2 t
ON ts.ta = t.ta
AND ts.id = :var1
AND (:var1 = 0 OR ts.em = :var2)
ORDER BY ts.id desc;
Upvotes: 1
Reputation: 44796
SELECT ts.id, t.id, t.name
FROM table1 ts
INNER JOIN tabble2 t
ON ts.ta = t.ta
AND ((:var1 = 0 AND ts.id = :var1) OR (:var1 <> 0 AND ts.id = :var1 AND ts.em = :var2))
ORDER BY ts.id desc;
Upvotes: 3