2014-04-16 162 views
0

假设我有两个表sql语句连接两个表

表名组

列1:送礼者

列2:接受

表名用户信息

列1 :名称

第2列:状态

我想选择发信人,接受人和userinfo.status从组表中发送者或接受者的名字是zakir给予者或接受者存在于uerinfo表作为名称。

需要帮助写SQL语句查询taht .. 在此先感谢... :)

+0

哪里是关键加入一些调整两个状态? –

+0

你有什么尝试?那两张桌子之间有什么关系? – Andrew

+0

是的先生我编辑我的帖子,你可能会看到.. :) 是先生userinfo表名称和组表格接受器或赠送者是相同的。 例如,如果userinfo表名是zakir,那么groups表接受者或授予者也可能是zakir – user3148422

回答

1

什么你是指也被称为在SQL语句中的INNER JOIN条款。

根据关系,您可以创建一个INNER JOIN来连接两个相同的变量。

SELECT column_name(s) 
FROM table1 
INNER JOIN table2 
ON table1.column_name=table2.column_name; 

W3Schools.com

1

提取尝试下面的查询,

SELECT 
gp.giver,gp.acceptor,ui.status 
FROM group as gp JOIN userinfo as ui 
on ui.name = 'zakir' 
AND (gp.giver = 'zakir' or gp.acceptor = 'zakir') 

或者尝试这种无连接,

SELECT 
gp.giver,gp.acceptor,ui.status 
FROM group as gp, userinfo as ui 
WHERE ui.name = 'zakir' 
AND (gp.giver = 'zakir' or gp.acceptor = 'zakir') 
1

试试这个:

SELECT `group`.`giver`, `group`.`acceptor`, `userinfo`.`status` 
FROM `group`, `userinfo` 
WHERE (`group`.`giver` = 'zakir' OR `group`.`acceptor` = 'zakir') 
    AND `userinfo`.`name` = 'zakir' 
+0

个人。请不要一次又一次发布相同的答案。请检查以前的答案,然后发布自己的答案。 –

+0

@HarishChinju你如何看待我的答案与你的相似?我逃脱了表和列名称,因为它们中的一些是保留关键字。你没有。另外你的答案比我早不到1秒,我怎么能在发布之前检查它?我们在这里或什么比赛? –

+0

在我们的答案之间,唯一的区别是我已经使用了别名,在那里你没有使用过,你已经做到了逃避顺序,以避免保留的关键字冲突。这是一个伟大的工作。但我的建议是,我认为在我们发布之前会有味精。所以在发布之前,我们可以刷新一下以检查发布的答案。无论如何,让我们看看这是否解决了他的问题。对。? –

1
select g.giver, g.acceptor u.status 
from group g, userinfo u 
where u.name = 'zakir' 
and (g.giver = u.name or g.acceptor = u.name) 

它应该做一份工作。

+1

伙计们..请不要一次又一次发布相同的答案。请检查以前的答案,然后发布自己的答案。 –

1

这是假设你要为送礼者和受体

可能需要MySQL的句法

Select giver, g.status, acceptor, a.status 
FROM GROUP 
join userinfo as g on group.giver = g.name 
join userinfo as a on group.acceptor = a.name 
where (giver = 'zakir' or acceptor = 'zakir')