2017-02-15 11 views
-1

私はSQLを使い始めたばかりで、この問題にぶつかりました。私が推測する非常に簡単な解決策がなければならない。すべてのリレーションはリレーションテーブルに保存されます。それから親と子がいます。親は会社であり、子供はこの会社の連絡先です。すべてのリレーションにはRelIDがありますが、relation_relationテーブルは会社と連絡先を分割するために使用されます。親と子のIDを持つ2行をマージする

私がいる問題は、私は、会社などのような1行に接触を得るように見えることができないということです。

| nameCompany | nameContact | 
----------------------------- 
|random B.V. | emmma  | 
|random B.V. | jason  | 

私は照会する2つのテーブルを持っています。これらは いくつかの例の値とバージョンを簡素化されています

CREATE TABLE relations_relations (parentRelID INT, childRelID INT); 

INSERT INTO `relations_relations` VALUES (1, 1); 
INSERT INTO `relations_relations` VALUES (1, 2); 
INSERT INTO `relations_relations` VALUES (1, 3); 

CREATE TABLE relations (RelID, nameContact, nameCompany); 

INSERT INTO `relations` VALUES (1, NULL, random B.V.); 
INSERT INTO `relations` VALUES (2, emma, NULL); 
INSERT INTO `relations` VALUES (3, jason, NULL); 
+1

MySQLやSQL-Serverの? – Kostis

+0

MySQLサーバ2015 – JesseWolf

答えて

1

あなたはrelations_relationsテーブルを経由して自分自身にJOIN関係テーブルに必要があります:私はそれを考え出し

SELECT p.nameCompany 
     ,c.nameContact 
FROM relations p 
    INNER JOIN relations_relations rr 
     ON p.RelID = rr.parentRelID 
    INNER JOIN relations c 
     ON c.RelID = rr.childRelID 
+0

p.parentRelIDとp.childRelIDはテーブル関係にないので、どのように参照していますか?私はあなたの方法を試していますが、それはcolomns parentRelIDとchildRelIDを見つけることができません – JesseWolf

+0

@ JesseWolf、ありがとう。あなたが私の答えで見ることができるように、私はテーブルの別名を 'rr' – Serge

+0

に修正しました。メッセージアロスがあります。どうもありがとう ! – JesseWolf

0

を私自身。 あなたは2回参加し、別の条件 を両方とも使用することになっています。この問題で

それは次のようになります。

Select * 
from Test_Relations_Relations a 
    inner join Test_relations b 
     on a.childrelID = b.RelID 
    inner join Test_relations c 
     on a.parentrelID = b.relID 
関連する問題