2014-04-16 158 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')