2014-11-17 78 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