在某些情况下,sqlite忽略了and运算符之前的条件,而仅使用or运算符,这会导致太多的答案不适合,因为它们不在该imenik表中。
SELECT k.ime, k.priimek, k.naslov, k.tel_st, k.gmail, kr.ime FROM kontakti k
INNER JOIN kraji kr ON kr.id = k.kraj_id
INNER JOIN imeniki i ON i.id = k.imenik_id
WHERE (i.ime = 'as')
AND (k.ime LIKE '%a%')
OR (k.priimek LIKE '%a%')
OR (k.naslov LIKE '%a%')
OR (k.tel_st LIKE '%a%')
OR (k.gmail LIKE '%a%')
OR (kr.ime LIKE '%a%');
答案 0 :(得分:0)
我认为您应该添加一些附加括号(将所有条件放在AND
操作数之后的两个括号内):
SELECT k.ime, k.priimek, k.naslov, k.tel_st, k.gmail, kr.ime FROM kontakti k
INNER JOIN kraji kr ON kr.id = k.kraj_id
INNER JOIN imeniki i ON i.id = k.imenik_id
WHERE (i.ime = 'as')
AND ((k.ime LIKE '%a%')
OR (k.priimek LIKE '%a%')
OR (k.naslov LIKE '%a%')
OR (k.tel_st LIKE '%a%')
OR (k.gmail LIKE '%a%')
OR (kr.ime LIKE '%a%'));