2017-01-05 11 views
0

明らかにSQLクエリの初心者です。SQLite変数が一致する3つのテーブルから選択します。

私はデータを持つ3つのテーブルを持っています:アカウント、オーナー、車両。

これらの3つの変数は、共通変数「User_Name」で結ばれています。

User_Nameが自分の検索変数と一致するこれらの3つのテーブルからすべてのアイテムを取得したいとします。 User_Name: "Mike"のユーザーを検索すると、User_Name "Mike"という3つのテーブルのすべてのアイテムが表示されます。

私は一般的な "JOIN"を使用して次のクエリを使用しますが、これを変更して検索変数を使用して、すべてのテーブルの変数に一致するALLを選択するにはどうすればよいですか?私は、「複数のテーブルから選択する」について、様々な他のスタック・スレッド上で見てきましたが、それらのすべてが、わずか2つのテーブルと3から選択したものから選択し、私がしたい変数の一致を持っていない

cursor.execute("SELECT * FROM Account JOIN Owner ON(Account.User_Name = Owner.User_Name) JOIN Vehicle ON(Account.User_Name = Vehicle.User_Name)") 

。短い中のSO

検索の3つの表と共通の列変数は、検索文字列に一致するすべての行を取得します。

+0

[SQLクエリが複数のテーブルからデータを返す方法](http://stackoverflow.com/questions/12475850/how-can-an-sql-query-return-data-from-multiple-tables) ) – MooingRawr

+0

この質問に対する答えは多分助けになるでしょう:http://stackoverflow.com/questions/35470590/sql-select-of-data-from-three-tables-relationed?rq=1 – igneosaur

+0

'どこにAccount.User_Name = %s'を検索し、検索名を置き換えます。 – Barmar

答えて

0

あなたのタグは、Pythonを示しているので、私は、Pythonを使って答えが表示されます、search_user変数は、我々は、検索するユーザー名を保持していると仮定すると:私たちはSQLを抽出した場合

cursor.execute("SELECT * FROM Account JOIN Owner ON(Account.User_Name = Owner.User_Name) JOIN Vehicle ON(Account.User_Name = Vehicle.User_Name) WHERE Account.User_Name='%s'" % search_user) 

物事はより明白であり、より読みやすい形でそれをフォーマット:クエリの上

SELECT * 
    FROM Account 
    JOIN Owner ON (Account.User_Name = Owner.User_Name) 
    JOIN Vehicle ON (Account.User_Name = Vehicle.User_Name) 
WHERE Account.User_Name='%s' 

User_Nameを検索含むテーブルAccountからすべてのレコードをフィルタします。ジョインは、一致するジョイン条件を持つ他のテーブルのレコードと一致します。

User_Nameのいずれかのテーブルで検索された値と一致するものがない場合は、結果にレコードが表示されないことに注意してください。たとえば、テーブルAccountにはUser_Name = 'Joe'のレコードがありますが、テーブルVehicleまたは'Owner'には'Joe'のレコードがありません。結果は'Joe'のレコードを持たないでしょう。

+0

ああ、私が必要だったのは、最後に "WHERE"節を追加することでした。私は質問をする前にこの解決策を試しましたが、私は誤った構文を得ているはずです。これは私の問題を解決しました。ありがとうございました! – DannyBoy

関連する問題