假設在表格「ab」中,我有從「a」類和「b」類相處的學生的名字,同樣我有表「ac」和「bc」。我應該使用什麼SQL查詢來獲得可以形成組的學生的所有組合(即「相處融洽」)?我該如何將它擴展到n個類? 例如:來自A班的John會與B班的Jen和C班的Steff相處,Jen和Steff會相處。因此,約翰,仁和斯蒂夫可以組成一個組)。加入SQL表格
Q
加入SQL表格
1
A
回答
0
此查詢應該返回所有可以與約翰組在一個組中的所有學生。
WITH ABC AS (SELECT AB.A, AB.B, AC.C FROM (SELECT * FROM AB
INNER JOIN BC
ON AB.B=BC.B)
INNER JOIN AC
ON (AC.C=BC.C AND AB.A=AC.A))
SELECT STUDENT FROM (
SELECT AB.B STUDENT FROM ABC WHERE AB.A='John'
UNION
SELECT AC.C STUDENT FROM ABC WHERE AB.A='John')
GROUP BY STUDENT
PS:寫快,沒有任何語法檢查,希望你能夠把這個工作:)
1
爲此,我將創建兩個表,一個學生表(ID,姓名,類)和關係表(student1,student2)。您可能還想爲班級的時間,地點等添加班級表。
一個友誼會有兩個關係(2,3)和(3,2)來形容它是雙向的。一種方式可能是另一名學生的追隨者或粉絲。 這可以擴展到3班以上。
然後,您可以使用多個連接來獲得朋友的朋友等等以任意深度。
下面是一個查詢來獲取的朋友(FOF)的朋友:
SELECT fof_details.*
FROM relationships r
INNER JOIN relationships fof
ON r.student2 = fof.student1
INNER JOIN student fof_details
ON fof_details.id = fof.student2
WHERE r.student1 = '12';
也有專門做圖建模作出這樣的數據庫引擎。
0
初始查詢可以通過代碼
select ab.a, ab.b, ac.c
from
ab inner join
bc on ab.b = bc.b inner join
ac on ac.a = ab.a and bc.c = ac.c
加緊N個類別滿足將獲得正越來越複雜= 4將與另外三個同樣的查詢連接
inner join ad on ab.a = ad.a
inner join bd on bd.b = ab.b and ad.d = bd.d
inner join cd on cd.c = ac.c and ad.d = cd.d
2類要求1個表和沒有連接,
3班需要3代表一ND 2連接,
4類需要6張桌子和5加入
所以我們可以看到它變得越來越複雜,因爲我們繼續
0
首先,你不希望有一個表中的每個類。您正在多個表中捕獲相同類型的信息,這通常被認爲是不好的做法。你想「規範化」你的數據,以便在同一個地方存在相同的數據。
其次,適當地命名您的表,以便您瞭解實際嘗試構建的內容。也許你總是想通過在問題中使用「ab」來掩蓋你對實際實現的意圖,但是如果你在你的實際代碼中這樣做,它將會長期傷害你。
看來你需要的名字一個人表以及您跟蹤誰是朋友,誰一個朋友表:
create table people (id int, name char(128));
create table friends (id int, person_id int, friend_id int);
然後你只需要具備查詢來獲取組:
SELECT person.* FROM friends
INNER JOIN friends grp
ON friends.friend_id = grp.person_id
INNER JOIN people person
ON person.id = grp.friend_id
WHERE friends.person_id = 42;
相關問題
- 1. SQL加入3個表格
- 2. MS SQL自己加入表格
- 3. 加入3個表格並過濾SQL
- 4. 加入表格時的SQL聚合
- 5. 已加入表格的SQL行連接
- 6. SQL需要幫助加入表格
- 7. 加入SQL表?
- 8. 加入SQL表
- 9. SQL:加入表
- 10. SQL加入2表
- 11. SQL三表加入
- 12. SQL加入wordpress表
- 13. cakephp - 加入表格
- 14. 加入3個表sql加入
- 15. 加入子表格和父表格
- 16. 右加入表本身SQL
- 17. 加入2個表SQL
- 18. SQL加入更新表
- 19. SQL - 加入兩個表
- 20. 加入在SQL三個表
- 21. 的Sql加入一個表
- 22. Oracle SQL加入兩個表
- 23. SQL加入3個表
- 24. 加入多個SQL表
- 25. SQL表加入合併
- 26. SQL表加入的問題
- 27. SQL多表加入SUM
- 28. SQL加入錶行數據
- 29. T-SQL:加入兩張表
- 30. SQL計數加入單表
看起來像一個糟糕的模式設計。 – 2010-12-14 22:38:44
+1 @Mark Byers - 贊同!! – exodream 2011-06-13 00:58:14