我的表格结构如下:
表人:
+-------+--------+
| sno | sname |
+-------+--------+
| 1 | Bhanu |
| 2 | Raghu |
| 3 | Bunny |
| 4 | Shyam |
+-------+--------+
表朋友:
+------+---------+
| sno | Friend |
+------+---------+
| 1 | 2 |
| 2 | 1 |
| 3 | 4 |
| 4 | 3 |
+------+---------+
如果我从人员表中提供'Bhanu'的名字,我也应该能够得到他的朋友的名字。在Friend表中提到了人员表中的sno
值。
请帮助我使用这种数据库执行此读取操作。
答案 0 :(得分: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'
。