0

いくつかのテーブルからすべての名前とすべてのニックネームを選択するクエリを作成する必要がありますが、idがいくつかの配列にある場合のみです。これはクエリです。

SELECT n. * FROM nikovi n 
INNER JOIN sajt_nikovi s ON n.id = s.nik
WHERE s.sajt = '50' and     n.nadimak like '%ana%' or n.ime like '%ana%'

そして、この結合のエントリだけでなく、'%ana%'のようなn.imeがあるテーブルからすべてのエントリが見つかりました。誰かが何か考えを持っていますか?

4

3 に答える 3

4

ANDはORよりも強く結合します。これは、次のようなものを評価することを意味します。

WHERE (s.sajt = '50' and n.nadimak like '%ana%') or n.ime like '%ana%'

他の意味がある場合は、データベースに明確にするために括弧を追加する必要があります。この場合、次のように変更する必要があります。

WHERE s.sajt = '50' and (n.nadimak like '%ana%' or n.ime like '%ana%')
于 2012-04-18T12:26:39.510 に答える
1

グループ化OR

SELECT n. * 
FROM nikovi n 
INNER JOIN sajt_nikovi s 
ON n.id = s.nik 
WHERE s.sajt = '50' 
AND (n.nadimak LIKE '%ana%' OR n.ime LIKE '%ana%')
于 2012-04-18T12:27:26.097 に答える
0

ANDとORを混在させる場合は、常に角かっこを使用してください

SELECT n. * FROM nikovi n INNER JOIN sajt_nikovi s ON n.id = s.nik WHERE s.sajt = '50' AND (n.nadimak LIKE '%ana%' OR n.ime LIKE '%ana%')
于 2012-04-18T12:28:06.913 に答える