2014-03-05 136 views
-1

我有表的結構如下:SQL命令,主鍵和外鍵

表人:

+-------+--------+ 
| sno | sname | 
+-------+--------+ 
| 1 | Bhanu | 
| 2 | Raghu | 
| 3 | Bunny | 
| 4 | Shyam | 
+-------+--------+ 

表的朋友:

+------+---------+ 
| sno | Friend | 
+------+---------+ 
| 1 | 2  | 
| 2 | 1  | 
| 3 | 4  | 
| 4 | 3  | 
+------+---------+ 
  • Bhanu是Raghu的朋友,反之亦然。
  • 兔子是Shyam的朋友,反之亦然。

如果我從人表中給出'Bhanu'的名字,我應該也可以得到他的朋友的名字。在朋友表中提到了他在人表中的sno值。

請幫助我用這種數據庫執行此讀取操作。

+0

你的意思是SQL查詢? – Kedarnath

+0

是@Kedarnath,我正在用Ajax和Java技術做Web應用程序,需要SQL命令,如果有鑰匙,我可以向前移動。請做好我的解決方案。謝謝。 –

+0

好,但爲什麼你用JAVA和Android標記了這個問題?你應該用sql,mysql標籤標記 – Kedarnath

回答

0

您需要兩次訪問person表,因此需要別名。我建議這個表格結構首先:

person (id, name) 

friend (from_person_id, to_person_id) 

這和你的表格結構非常相似,但名稱更清晰一些。

現在你可以有這樣的:

SELECT 
    p2.name 
FROM 
    friend 
INNER JOIN person p1 ON (p1.id = friend.from_person_id) 
INNER JOIN person p2 ON (p2.id = friend.to_person_id) 
WHERE 
    p1.name = 'Bhanu' 
; 

,列出了所有的友誼從正在進行的「從」到「」。您可能還需要列出所有以其他方式進行的友誼,在這種情況下,您可以添加OR p2.name = 'Bhanu'