0

外部キーとも呼ばれる関係を持たないノードのデータベースを照会したい。この結合ステートメントを試しましたが、うまくいきませんでした

SELECT nodes.*, relationships.* FROM nodes inner JOIN relationships ON nodes.id = null;

関係のないノードだけを表示するにはどうすればよいですか? ありがとうございました

nodes                 Relationships                      
-----                 -------------
id int(11),           id int(11),
name varchar(35),     to int(11), //this is the destination node from the id relation 
color varchar(7),     data varchar(0) null
type varchar (12),    Foreign key (id) references nodes(id)
Primary key (id)       

engine = innodb    
4

2 に答える 2

2

あなたの問題は、結合を含むステートメントでON nodes.id = null列名を使用する必要があることです。ONを設定したい場合はnodes.id = nullwhere

SELECT 
    nodes.*
FROM 
    nodes left JOIN relationships ON nodes.id = Relationships.id
where
    Relationships.id is null;
于 2013-03-29T08:58:37.817 に答える
0
SELECT * FROM nodes WHERE id NOT IN (SELECT `to` from Relationships);

これは、リレーションシップ テーブルに ID がないノードを返します

また、ベスト プラクティスは、データベースで小文字のみを使用することです。これは、一部のデータベースでは大文字と小文字が区別され、他のデータベースでは区別されないためです。

于 2013-03-29T08:59:10.350 に答える