2017-07-16 25 views
0

私は3つのテーブル間の結合をしようとしています。bookshelf/knex InnerJoin複数のテーブル間

これらの表、表a、b、およびcを呼び出してみましょう。

表aには、bからの外部キーのターゲットである主キーがあります。 同様に、表aの主キーは、cからの外部キーのターゲットです。

私がやりたいエンドクエリは、私のqueryBuilderは今(表Aから開始)この右のように見えます

SELECT * FROM a WHERE b.foreign_key = a.primary_key OR c.foreign_key = a.primary_key

のようなものです:

qb.innerJoin('b', 'b.foreign_key', 'a.primary_key') qb.innerJoin('c', 'c.foreign_key', 'a.primary_key')

私はこれがあると思います間違っています。これは、テーブルcの結合を行うと、aとbの前の結合の影響を受けているからです。

私はこの3者結合を行う方法がありますか?その場合、結合は互いに追加/結合されます。

答えて

0

解決しました。

代わりに、左結合を使用するだけでした。左結合を使用すると、元のテーブル(テーブルa)が保持され、aとbを結合したときに起こっていたようにculledされないようになります。

関連する問題