私のフロントエンドアプリケーションでは、テーブル全体に固有の検索フィールドがあります。 親テーブルとINNER JOIN(子)テーブルの2つのフィールドのOR条件をSQLで行う方法があるかどうかを知りたいと思います。私は、文字列Sで検索>アドレス(ID、名前、USER_ID)SQL:親フィールドと子フィールドの間の条件
- 多くの関係へのユーザー(ID、名前) 1つの所与の
例
そして、私はすべてのユーザーを見つけたいという名SまたはS
という名前の街に住んでいるすべてのユーザー私のフロントエンドアプリケーションでは、テーブル全体に固有の検索フィールドがあります。 親テーブルとINNER JOIN(子)テーブルの2つのフィールドのOR条件をSQLで行う方法があるかどうかを知りたいと思います。私は、文字列Sで検索>アドレス(ID、名前、USER_ID)SQL:親フィールドと子フィールドの間の条件
- 多くの関係へのユーザー(ID、名前) 1つの所与の
例
そして、私はすべてのユーザーを見つけたいという名SまたはS
という名前の街に住んでいるすべてのユーザーselect distinct user.*
from user
join address on user.id = address.user_id
where user.name = 'S' or address.city = 'S'
あなたのニーズに合ったものを選んでください。
私は、が、Address.City
の不足のために検索したいフィールドであると仮定しています。
SELECT User.*
FROM User
JOIN Address ON Address.User_ID = User.ID
WHERE (User.Name LIKE '%S%' OR Address.Name LIKE '%S%');
これは、あなたの名前や都市がS
を含んだユーザーのための情報を提供します。
SELECT User.*
FROM User
JOIN Address ON Address.User_ID = User.ID
WHERE (User.Name LIKE 'S%' OR Address.Name LIKE 'S%');
例SQL QUERY:あなたは、彼らがS
とを開始場所を検索することを好む場合は、以下を使用
SELECT * from USER user where user.name='S' or user.id IN(SELECT add.user_id from Address add where add.name='S')
これは動作しません。あなたのサブクエリはアドレスIDを返しており、INステートメントはユーザーIDを探しています。それは行を返すかもしれませんが、私はそれが正しいことを非常に疑う。 –
INステートメントは "S"の都市に住んでいるユーザーIDを探しています。ユーザーIDを含むスキーマのアドレステーブルを参照すると問題はありません。 – hamzox
問題はどこにありません。これは、サブクエリで選択しているものです。 'add add.id from Address add add.name = 'S''はアドレスIDのリストを返します。 'またはuser.id IN(ADDRESS_IDS_HERE)'となります。それは 'SELECT add.user_id'であるべきです –
'ユーザから選択*どこ名= 'S' またはIDで( Address from name = 'S') ' – Mike