给定以下两个表:
Person table
id (pk)
first
middle
last
age
Address table
id(pk)
person_id (fk person.id)
street
city
state
zip
我该如何创建一个SQL语句,返回所有邮编为97229的人员信息?
给定以下两个表:
Person table
id (pk)
first
middle
last
age
Address table
id(pk)
person_id (fk person.id)
street
city
state
zip
我该如何创建一个SQL语句,返回所有邮编为97229的人员信息?
Select * from people p, address a where p.id = a.person_id and a.zip='97229';
或者你必须尝试使用JOIN
,因为像评论中的Gordon Linoff所说,这是一种更有效、更好的方法,你需要学习这个。
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表中的所有列。
where
是不正确的(基于你实际的 JOIN
- 我已经编辑过了)。 - Andy Brown您需要将这两个表进行连接:
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 p.*, a.street, a.city FROM persons AS p
JOIN address AS a ON p.id = a.person_id
WHERE a.zip = '97299'
首先从 person 表中选择所有记录,然后将这些记录与另一个名为“Address”的表连接起来...现在你拥有了所有地址表中有地址的人的记录...最后通过邮政编码筛选你的记录。
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,
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