2013-02-07 90 views
1

我很難理解mySQL上的連接,我找不到任何類似的例子。mysql上的基本連接

假設我有兩個表格:usersusers_info

的用戶我有idemailpassword領域,同時,在users_info我有他們所有的信息,如namesurnamestreet

所以,如果我得到這樣的用戶:

SELECT * FROM users WHERE id = 43 

與他們的信息是這樣的:

SELECT * FROM users_info WHERE id = 43 

我基本上會得到2個結果和2個表格。

我現在明白了,我需要使用連接,以便他們都在一起,但我無法弄清楚。

任何幫助?

回答

2

看來這兩個表usersuser_info被列因此id需要使用此列像這樣投身其中與每個人的關係一樣:

SELECT 
    u.id, 
    u.email, 
    u.password, 
    i.name, 
    i.surname, 
    i.street 
FROM users   AS u 
INNER JOIN user_info AS i ON u.id = i.id; 

這隻會選擇字段id, email, ... etc然而,如果你想從兩個表使用SELECT *選擇的所有列:

SELECT * 
FROM users   AS u 
INNER JOIN user_info AS i ON u.id = i.id; 

如果你想輸入的id並得到所有這些數據爲特定用戶的,在添加WHERE條款查詢的結束:

SELECT * 
FROM users   AS u 
INNER JOIN user_info AS i ON u.id = i.id 
WHERE u.id = 43; 

更多有關JOIN敬請參閱以下內容:

+0

謝謝,但是如果我想從兩個表中選擇*,該怎麼辦? –

+0

@johnsmith - 爲此使用'SELECT *',請參閱我的編輯。 –

0

你也可以這樣做:

SELECT users.*, users_info.* 
FROM users, users_info 
WHERE users.id = users_info.id AND users.id = 43; 

這意味着: 「給我所有的用戶表,從該行users_info表中的列,所有列,用戶的id列和users_info的id列彼此對應」

+0

好的,但我怎麼實際輸入ID? –

+0

看,我編輯了與id的答案 – Bgi