Oracle SQL wie schreibe ich eine SQL-Anweisung, die überprüft, ob Benutzer in meinem Netzwerk (dh Freunde oder Freunde von Freunden)

8

Ich habe dieses Problem. Eine users -Tabelle, die aus dem Benutzernamen der Benutzer in einem sozialen Netzwerk und der Tabelle friends besteht, die den Namen eines Benutzers und den Freundennamen eines Benutzers enthält, wie unten ...

%Vor%

... Ich versuche eine SQL-Anweisung zu schreiben, wenn ein Benutzer in meinem Netzwerk ist. Mit anderen Worten Ist dieser Benutzer ein Freund oder Freund von Freunden?

Ich habe dieses Problem getanzt und konnte nur diese Frage stellen:

%Vor%

Es überprüft grundsätzlich, ob ein Benutzer, wenn es ein Freund von meinem Freund ist, d. h. einfach null zurückgibt, wenn er falsch ist.

Ich versuche herauszufinden, wie ich mich durch mein ganzes Netzwerk von Freunden ausbreiten kann. Ich meine, nicht nur Freund meiner Freundin.

    
core_pro 19.02.2010, 13:05
quelle

2 Antworten

5
___ answer2296452 ​​___
%Vor%

Aktualisiere die Ebene wie nötig: Du kannst nach Freunden der dritten Ebene usw. suchen.

Wenn die Freundschaftsbeziehung symmetrisch ist, sollten Sie die folgende Abfrage durchführen:

%Vor%

Diese Abfrage kann viel schneller durchgeführt werden, wenn Sie Ihre Tabelle denormalisieren: Speichern Sie zwei Datensätze pro Freundschaft, wie folgt:

%Vor%

Dann kannst du einfach das obige CTE durch das dual_friends ersetzen:

%Vor%

, das den Index verwendet und viel effizienter ist, besonders wenn Sie den Level auf einen vernünftigen Wert begrenzen.

    
___ tag123sql ___ Structured Query Language (SQL) ist eine Sprache für die Abfrage von Datenbanken. Fragen sollten Codebeispiele, Tabellenstruktur, Beispieldaten und ein Tag für die verwendete DBMS-Implementierung (z. B. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 usw.) enthalten. Wenn sich Ihre Frage nur auf ein bestimmtes DBMS bezieht (verwendet bestimmte Erweiterungen / Funktionen), verwenden Sie stattdessen das Tag des DBMS. Antworten auf mit SQL gekennzeichnete Fragen sollten den ISO / IEC-Standard SQL verwenden. ___ qstntxt ___

Ich habe dieses Problem. Eine %code% -Tabelle, die aus dem Benutzernamen der Benutzer in einem sozialen Netzwerk und der Tabelle %code% besteht, die den Namen eines Benutzers und den Freundennamen eines Benutzers enthält, wie unten ...

%Vor%

... Ich versuche eine SQL-Anweisung zu schreiben, wenn ein Benutzer in meinem Netzwerk ist. Mit anderen Worten Ist dieser Benutzer ein Freund oder Freund von Freunden?

Ich habe dieses Problem getanzt und konnte nur diese Frage stellen:

%Vor%

Es überprüft grundsätzlich, ob ein Benutzer, wenn es ein Freund von meinem Freund ist, d. h. einfach null zurückgibt, wenn er falsch ist.

Ich versuche herauszufinden, wie ich mich durch mein ganzes Netzwerk von Freunden ausbreiten kann. Ich meine, nicht nur Freund meiner Freundin.

    
___ qstnhdr ___ Oracle SQL wie schreibe ich eine SQL-Anweisung, die überprüft, ob Benutzer in meinem Netzwerk (dh Freunde oder Freunde von Freunden) ___ tag123oracle ___ Oracle Database ist ein Datenbankmanagementsystem mit mehreren Modellen, das von Oracle Corporation erstellt wurde. Verwenden Sie dieses Tag NICHT für andere Produkte von Oracle wie Java und MySQL. ___ answer2296456 ___

Sie können %code%

verwenden     
___ tag123socialnetworking ___ Dieses Tag befasst sich nicht mit Social-Media-Problemen. Es betrifft die Analyse von Netzwerken, eine formale mathematische Struktur. Ein soziales Netzwerk besteht aus Individuen (zB Menschen, Organisationen), die durch eine oder mehrere spezifische Arten von Beziehungen verbunden sind (wie Freundschaft, Verwandtschaft, gemeinsames Interesse, finanzieller Austausch, Abneigung oder Ratssuche). ___
Quassnoi 19.02.2010, 13:11
quelle
1

Sie können connect by

verwenden     
Klaus Byskov Pedersen 19.02.2010 13:12
quelle

Tags und Links