Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

SQL X Cypher/Neo4j:quais amigos dos meus amigos são meus inimigos?

Posted on 2022-05-30

Neste post vamos 比较 uma Consulta feita com SQL ea mesma Consulta feita com CYPHER;语言做 Neo4j。 Vamos pesquisar quais amigos dos meus amigos são meus inimigos。 Vamos usar os personagens 做动漫火影忍者。

  • Neo4j
    • Neo4j – Criando os 角色
    • Neo4j – Criando relacionamentos de amizade
    • Neo4j – Criando relacionamentos de inimizade
    • Neo4j – Fazendo 咨询
  • SQL
    • SQL – Criando 操作系统角色
    • SQL – Criando relacionamentos de amizade
    • SQL – Criando relacionamentos de inimizade
    • SQL – Fazendo 咨询
  • 结论

Neo4j – Criando os 角色

CREATE ( :Ninja { name: 'Naruto Uzumaki' }) CREATE ( :Ninja { name: 'Sasuke Uchiha' }) CREATE ( :Ninja { name: 'Sakura Haruno' }) CREATE ( :Ninja { name: 'Gaara' }) CREATE ( :Ninja { name: 'Rock Lee' }) CREATE ( :Ninja { name: 'Orochimaru' })

Neo4j – Criando relacionamentos de amizade

火影忍者之友:

 MATCH ( naruto :Ninja ),( sakura :Ninja ) WHERE naruto.name = 'Naruto Uzumaki' AND sakura.name = 'Sakura Haruno' CREATE ( naruto ) - [ :FRIEND_OF ] -> ( sakura ) RETURN naruto , sakura
 MATCH ( naruto :Ninja ),( rock :Ninja ) WHERE naruto.name = 'Naruto Uzumaki' AND rock.name = 'Rock Lee' CREATE ( naruto ) - [ :FRIEND_OF ] -> ( rock ) RETURN naruto , rock
 MATCH ( naruto :Ninja ),( gaara :Ninja ) WHERE naruto.name = 'Naruto Uzumaki' AND gaara.name = 'Gaara' CREATE ( naruto ) - [ :FRIEND_OF ] -> ( gaara ) RETURN naruto , gaara
 MATCH ( n ) RETURN n

图片说明

樱花之友:

 MATCH ( sakura :Ninja ),( sasuke :Ninja ) WHERE sakura.name = 'Sakura Haruno' AND sasuke.name = 'Sasuke Uchiha' CREATE ( sakura ) - [ :FRIEND_OF ] -> ( sasuke ) RETURN sakura , sasuke
 MATCH ( sakura :Ninja ),( rock :Ninja ) WHERE sakura.name = 'Sakura Haruno' AND rock.name = 'Rock Lee' CREATE ( sakura ) - [ :FRIEND_OF ] -> ( rock ) RETURN sakura , rock
 MATCH ( n ) RETURN n

图片说明

Neo4j – Criando relacionamentos de inimizade

Inimigos 火影忍者:

 MATCH ( naruto :Ninja ),( sasuke :Ninja ) WHERE naruto.name = 'Naruto Uzumaki' AND sasuke.name = 'Sasuke Uchiha' CREATE ( naruto ) - [ :ENEMY_OF ] -> ( sasuke ) RETURN naruto , sasuke
 MATCH ( naruto :Ninja ),( orochimaru :Ninja ) WHERE naruto.name = 'Naruto Uzumaki' AND orochimaru.name = 'Orochimaru' CREATE ( naruto ) - [ :ENEMY_OF ] -> ( orochimaru ) RETURN naruto , orochimaru
 MATCH ( n ) RETURN n

图片说明

Neo4j – Fazendo 咨询

火影忍者之友:

 MATCH ( naruto :Ninja { name: 'Naruto Uzumaki' }) - [ :FRIEND_OF ] -> ( friends ) RETURN friends

图片说明

Amigos dos amigos do 火影忍者:

 MATCH ( naruto :Ninja { name: 'Naruto Uzumaki' }) - [ :FRIEND_OF ] -> ( friends ) MATCH ( friends ) - [ :FRIEND_OF ] -> ( friends_of_friends ) RETURN friends_of_friends

图片说明

Amigos dos amigos do Naruto que são inimigos do Naruto:

 MATCH ( naruto :Ninja { name: 'Naruto Uzumaki' }) - [ :FRIEND_OF ] -> ( friends ) MATCH ( friends ) - [ :FRIEND_OF ] -> ( friends_of_friends ) MATCH ( naruto ) - [ :ENEMY_OF ] -> ( friends_of_friends ) RETURN naruto , friends_of_friends

图片说明

SQL – Criando 操作系统角色

CREATE TABLE ninjas ( id SERIAL PRIMARY KEY , name VARCHAR ( 255 ) ); INSERT INTO ninjas ( name ) VALUES ( 'Naruto Uzumaki' ), ( 'Sasuke Uchiha' ), ( 'Sakura Haruno' ), ( 'Gaara' ), ( 'Rock Lee' ), ( 'Orochimaru' ); SELECT * FROM ninjas ;

SQL – Criando relacionamentos de amizade

CREATE TABLE friends ( id SERIAL PRIMARY KEY , ninja_1 INTEGER , ninja_2 INTEGER , FOREIGN KEY ( ninja_1 ) REFERENCES ninjas ( id ), FOREIGN KEY ( ninja_2 ) REFERENCES ninjas ( id ), UNIQUE ( ninja_1 , ninja_2 ) ); -- Amigos do Naruto: INSERT INTO friends ( ninja_1 , ninja_2 ) VALUES ( 1 , 3 ), ( 1 , 4 ), ( 1 , 5 ); -- Amigos da Sakura: INSERT INTO friends ( ninja_1 , ninja_2 ) VALUES ( 3 , 2 ), ( 3 , 5 ); SELECT * FROM friends ;

SQL – Criando relacionamentos de inimizade

CREATE TABLE enemies ( id SERIAL PRIMARY KEY , ninja_1 INTEGER , ninja_2 INTEGER , FOREIGN KEY ( ninja_1 ) REFERENCES ninjas ( id ), FOREIGN KEY ( ninja_2 ) REFERENCES ninjas ( id ), UNIQUE ( ninja_1 , ninja_2 ) ); -- Inimigos do Naruto: INSERT INTO enemies ( ninja_1 , ninja_2 ) VALUES ( 1 , 2 ), ( 1 , 6 ); SELECT * FROM enemies ;

SQL – Fazendo 咨询

火影忍者之友:

 SELECT DISTINCT f . ninja_2 , ( SELECT name FROM ninjas WHERE id = f . ninja_2 ) FROM ninjas n , friends f WHERE f . ninja_1 = 1 ;

图片说明

樱花之友:

 SELECT DISTINCT f . ninja_2 , ( SELECT name FROM ninjas WHERE id = f . ninja_2 ) FROM ninjas n , friends f WHERE f . ninja_1 = 3 ;

图片说明

Amigos dos amigos do 火影忍者:

 SELECT DISTINCT f . ninja_2 , ( SELECT name FROM ninjas WHERE id = f . ninja_2 ) FROM ninjas n , friends f WHERE f . ninja_1 IN ( SELECT DISTINCT f . ninja_2 FROM ninjas n , friends f WHERE f . ninja_1 = 1 );

图片说明

Amigos dos amigos do Naruto que são inimigos do Naruto:

 SELECT e . ninja_2 , ( SELECT name FROM ninjas WHERE id = e . ninja_2 ) FROM enemies e WHERE ninja_2 IN ( SELECT DISTINCT f . ninja_2 FROM ninjas n , friends f WHERE f . ninja_1 IN ( SELECT DISTINCT f . ninja_2 FROM ninjas n , friends f WHERE f . ninja_1 = 1 ) );

图片说明

结论

Conseguimos concluir que essa Consulta é bem mais simples fazer com a linguagem Cypher。 Nesses casos é bom usar um banco de dados de grafos como o Neo4j。 Se alguém tiver um jeito mais simples de fazer essa Consulta com SQL por 赞成 deixe seu comentário 🙂

原文: https://dev.to/maiquitome/sql-x-cypherneo4j-quais-amigos-dos-meus-amigos-sao-meus-inimigos-el4

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Lou Plummer
  • Luke Wroblewski
  • Matt Stoller
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme