2012-10-15 103 views
8

鑑於以下兩個表:SQL SELECT語句具有多個表的

Person table 
id (pk) 
first 
middle 
last 
age 

Address table 
id(pk) 
person_id (fk person.id) 
street 
city 
state 
zip 

如何創建一個返回的人郵編97229的所有信息的SQL語句?

+0

我只是不知道從哪裏開始。我明白如何從一個表,即SELECT * FROM WHERE人首先=「約翰」選擇,但它在我迷路 – user1420913

+0

正是我需要的表的結合!感謝你保持簡單。 – user1420913

回答

21
Select * from people p, address a where p.id = a.person_id and a.zip='97229'; 

或者使用JOIN這是在下面還評論這樣做,因爲戈登·利諾夫一個更有效率和更好的方式必須TRY說,你需要學習這一點。

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.*表示它將顯示人員表的所有列。

+0

你的第一個'where'是不正確的(根據您的實際'JOIN' - 我已經編輯它什麼,如果 –

+1

有兩個表之間沒有關係,我們只是想獲取其他後 – SAR

+0

@SAR一個記錄這就是我要做的。你有沒有搞清楚? – Anupam

1

就像是:

SELECT p.*, a.street, a.city FROM persons AS p 
JOIN address AS a ON p.id = a.person_id 
WHERE a.zip = '97299' 
4

你需要加入兩個表:

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條款中選擇不同的列來限制這一點。

1

首先選擇從人表中的所有記錄,然後再加入所有這些記錄與另一個表「地址」 ......現在u有所有誰都有自己的地址表中的地址的人的記錄...所以最後通過篩選記錄郵政編碼。

select * from Person as P inner join Address as A on 
    P.id = A.person_id Where A.zip='97229' 
0
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