1

ユーザーを格納する標準テーブルと1対多の関係を持つSQL Serverにいくつかのノードとエッジテーブルがあります。各エッジとノード テーブルには、この 1N の関係があります。

次のように、match 句と左結合を使用してクエリを実行する方法を知りたいです。

SELECT * FROM Node1Table n1, EdgeTable e, Node2Table n2
LEFT JOIN UserTable usr ON e.usr = usr.ID
MATCH (n1-(e)->n2)

次のようにクエリを書くことができます:

SELECT * FROM EdgeTable e
INNER JOIN Node1Table n1 ON e.$from_ID = n1.$node_ID
INNER JOIN Node2Table n2 ON e.$to_ID = n2.$node_ID
LEFT JOIN UserTable usr ON e.usr = usr.ID

しかし、n1 がオブジェクトからのものかオブジェクトへのものかはわかりません。

e.usr が null になる可能性があるため、内部結合を実行できません

ご協力ありがとうございました

編集:

テスト 1 :

SELECT * FROM
OBJ_APPLICATION n1, REL_APPLICATION_RESPONSABLE r INNER JOIN    
Management_User u on u.[UserID] = r.[CPQ], OBJ_RESPONSABLE n2
WHERE MATCH(n1-(r)->n2)

error : The identifier "r" in a MATCH clause is used with a JOIN clause or an APPLY operator. JOIN and APPLY are not supported with MATCH clauses.

テスト 2 :

SELECT * FROM
OBJ_APPLICATION n1, REL_APPLICATION_RESPONSABLE r, OBJ_RESPONSABLE n2
INNER JOIN Management_User u on u.[UserID] = r.[CPQ]
WHERE MATCH(n1-(r)->n2)

error : The multi-part identifier r.CPQ could not be bound

テスト 3 :

SELECT * FROM
OBJ_APPLICATION n1, REL_APPLICATION_RESPONSABLE r, OBJ_RESPONSABLE n2, Management_User u
WHERE MATCH(n1-(r)->n2)
AND u.[UserID] = r.[CPQ]

Works with an INNER JOIN but in some cases I have to make a LEFT JOIN
4

1 に答える 1