2013-07-13 83 views
0

我有问题从mysql中的某些表中检索不同的值。 这里是我的查询:从多个表中选择不同的值mysql

select profile_term.*,application_gmbr.gmb,application.name_app from 
relasi_useraplikasi, 
(profile_term inner join application_gmbr on 
profile_term.id_app=application_gmbr.id_app) inner join application ON 
profile_term.id_app=application.id_app 
where relasi_useraplikasi.id_user='2' 
and application_gmbr.id_app not like relasi_useraplikasi.id_app 
and profile_term.id_app not like relasi_useraplikasi.id_app 
and application.id_app not like relasi_useraplikasi.id_app 
GROUP BY application.id_app 
order by score asc limit 5; 

这不工作,我仍然得到值,其中id_app在relasi_useraplikasi.id_app。

我想从profile_term,application_gmbr,应用程序中获取数据,其中profile_term.id_app,application_gmbr.id_app,application.id_app与relasi_useraplikasi.id_app不同。

这是我的数据表:

1.profile_term

id_app||profile 
================ 
    1  A 
    2  B 
    3  C 
    4  D 
    5  E 

2.application_gmbr

id_app||gmb 
=============== 
    1  p1 
    2  p2 
    3  p3 
    4  p4 
    5  p5 

3.应用

id_app||name_app 
=============== 
    1  app1 
    2  app2 
    3  app3 
    4  app4 
    5  app5 

3.relasi_useraplikasi

id_app||id_user 
=============== 
    1  1 
    2  2 
    3  3 
    4  4 
    5  5 

结果,我想,给了我,我想没有id_app其中id_user在relasi_useraplikasi = 2的所有记录:

id_app||profile|| gmb ||name_app 
    ================================== 
    1  A  p1  app1 
    3  C  p3  app3 
    4  D  p4  app4 
    5  E  p5  app5 

任何帮助,将不胜感激

+0

请添加要 – Lepidosteus

+0

一些示例数据和结果的个例如何relasi_useraplikasi涉及profile_term? – Strawberry

+0

我刚刚编辑我的问题,他们都有id_app我想要的是获取所有记录没有id_app id_user = 2。 – feroAditya

回答

0

“这行不通我仍然在relasi_useraplikasi.id_app中的id_app处获得值。“

如果您希望条件是没有显示' relasi_useraplikasi.id_app'之一的行,您可以在子查询中使用'not in'。

例如:“没有(请从relasi_useraplikasi不同relasi_useraplikasi.id_app)application_gmbr.id_app”

+0

它给我错误 [错误] 1064 - 你的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以便在'relasi_useraplikasi.id_app 和profile_term.id_app不在relasi_useraplikasi中'附近使用正确的语法。在线5 – feroAditya

+0

以及,谢谢它的工作.. 使用不在和选择不同。 感谢您的帮助,@meeWok – feroAditya

+0

这个答案会执行得非常糟糕,因为子查询将针对外部查询中的每个结果执行。做到这一点的“正确”方法是使用JOIN。 –