次の2つのテーブルがあるとします。
Person table
id (pk)
first
middle
last
age
Address table
id(pk)
person_id (fk person.id)
street
city
state
zip
郵便番号97229のユーザーのすべての情報を返すSQLステートメントを作成するにはどうすればよいですか?
次の2つのテーブルがあるとします。
Person table
id (pk)
first
middle
last
age
Address table
id(pk)
person_id (fk person.id)
street
city
state
zip
郵便番号97229のユーザーのすべての情報を返すSQLステートメントを作成するにはどうすればよいですか?
Select * from people p, address a where p.id = a.person_id and a.zip='97229';
または、以下のコメントでゴードン・リノフJOIN
もこれを学ぶ必要があると言っているので、これを行うためのより効率的でより良い方法を使用してみる必要があります。
SELECT p.*, a.street, a.city FROM persons AS p
JOIN address AS a ON p.id = a.person_id
WHERE a.zip = '97299';
ここで p.*
は、PERSONS テーブルのすべての列が表示されることを意味します。
2 つのテーブルを結合する必要があります。
select p.id, p.first, p.middle, p.last, p.age,
a.id as address_id, a.street, a.city, a.state, a.zip
from Person p inner join Address a on p.id = a.person_id
where a.zip = '97229';
これにより、両方のテーブルからすべての列が選択されます。select
もちろん、句で別の列を選択することで、それを制限できます。
最初に人物テーブルからすべてのレコードを選択し、次にこれらすべてのレコードを別のテーブル「住所」と結合します...これで、住所テーブルに住所を持つすべての人物のレコードがあります...最後に郵便番号でレコードをフィルタリングします。
select * from Person as P inner join Address as A on
P.id = A.person_id Where A.zip='97229'
そのように:
SELECT p.*, a.street, a.city FROM persons AS p
JOIN address AS a ON p.id = a.person_id
WHERE a.zip = '97299'
select P.*,
A.Street,
A.City,
A.State
from Preson P
inner join Address A on P.id=A.Person_id
where A.Zip=97229
Order by A.Street,A.City,A.State