2014-11-17 75 views
1

我有一個懷疑,試圖通過以前的搜索連接兩個表。我已經看了幾種解決方案,並在MySQL的書閱讀部分章節,但我覺得我很接近正確答案,但依然沒有得到它從兩個表中加入mysql

我有這個表「userprocess」:

idProcess   username   state 
------------------------------------------ 
1     blisssing  3 
2     enriquecalvera 1 
2     africabaluja  2 
1     enriquecalvera 3 
2     blisssing  1 

該表的主要關鍵是idProceso +用戶名的結合。

我有這等表「用戶」:

index  username  pass   active  tipeUser  .... so on 
----------------------------------------------------------------- ---- 
1   blisssing  6OiZVVUPi3LDE 1   user 
2   carmen   6OOtfrXB2Nu5. 1   user 
3   consuelo  6OgdhVSkr1VDs 1   user 
4   africabaluja 6OoPtGjWMQARE 1   user 
5   enriquecalvera 6O6tvHg.122uQ 1   user 

的事情是我想說明兩個表中,但與第一表內的搜索的連接。如果我運行此查詢

SELECT username FROM userprocess where idProcess='1' ORDER BY state 

我得到這個:

username 
--------- 
blisssing 
enriquecalvera 

這正是我期待的,但我想顯示所有在「用戶」表通過訂購這些用戶名的字段idProceso。於是我運行這個其他查詢:

SELECT * 
FROM 
    user u, 
    userprocess p 
WHERE 
    u.username=p.username 
    AND u.username IN (
    SELECT username 
    FROM userprocess 
    where idProcess='1' 
    ORDER BY username 
) ORDER BY p.state 

我得到這個:

username  pass   active tipeUser idProcess state 
---------------------------------------------------------------------- 
blisssing  6Od3nSkfOiwlg 1  user  2   1 
enriquecalvera 6Oc9usiDEk51U 1  user  2   1 
enriquecalvera 6Oc9usiDEk51U 1  user  1   3 
blisssing  6Od3nSkfOiwlg 1  user  2   3 

但是,這不是我想要的我只是想相同的兩個結果在之前的查詢什麼,但與所有列連接兩個表的結果..

我知道有很多這樣的問題,但我已經嘗試了很多東西,仍然沒有慾望的結果..

我是什麼 失蹤?

謝謝你,如果你有任何qestion或疑問,只問:)

+0

你想要哪個值的列?你有四行是有原因的。你應該用你想要的結果編輯你的問題。 –

回答

1

你看到多個結果的原因是因爲你的加入只是用戶名,但當然userprocess表中有2行其中username = enriquecalvera。您的子查詢正確地只返回您感興趣的1行(其中idprocess = 1),但由於您的連接與此分離,因此不包括idprocess = 1條件,因此您將返回兩行。

你應該只是做這一步了加入這樣的:

SELECT * 
FROM 
    user u 
INNER JOIN userprocess p on u.username=p.username and p.idProcess='1' 
ORDER BY p.state 
+0

你的回答是正確的!非常感謝你,你只是在查詢時發生了錯誤 - >表userProcess是列idProcess的,所以它會是p.idProcess(我不能編輯它,因爲它少於6個字符)。非常感謝你! – neteot

+0

@neteot - 答案更新,很高興幫助! – StevieG