左联接对于具有值的列返回null

时间:2019-01-05 07:36:54

标签: postgresql express join knex.js

我有2张桌子:

表1:

id  |   item_id    |   item_name
1   |      1       |     apple

表2:

id  |   item_id    |   item_price

表1中有一些数据,表2中还没有任何数据,但是我想在html表中显示它们。我希望加入2个表以获取json对象:

{id: 1, item_id: 1, item_name: apple, item_price: null}.

但是我得到了这个json对象,而不是它:

{id: null, item_id: null, item_name: apple, item_price: null}

使用knexjs,这是我用来联接表的代码:

database.select ('*') from ('table1).leftJoin('table2', 'table1.item_id', 'table2.item_id').then(function(data) {
console.log(data)
};

我加入有误吗?我为此使用节点快递服务器和一个PostgreSQL数据库。我希望id和item_id不返回null,因为它们具有值。还是有办法从联接表之外的所有列中获取所有值?谢谢你。

2 个答案:

答案 0 :(得分:1)

我猜想列名覆盖的问题。做类似的事情-

database('table1')
.leftJoin('table2', 'table2.item_id', 'table1.item_id')
.columns([
    'table1.id',
    'table1.item_id',
    'table1.item_name',
    'table2.price'
    ])
.then((results) => {

})

答案 1 :(得分:0)

我不知道knex.js,但我会尝试database.select('table1.*')....