Left Join вернул ноль для столбцов, которые имеют значения - PullRequest
0 голосов
/ 05 января 2019

У меня есть 2 таблицы:

table1:

id  |   item_id    |   item_name
1   |      1       |     apple

table2:

id  |   item_id    |   item_price

В таблице 1 есть некоторые данные, а в таблице 2 еще нет данных, но я хочу показать их в HTML-таблице. Я присоединяюсь к двум таблицам, надеемся получить объект 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 не возвращали ноль, поскольку они имеют значения. Или есть способ получить все значения из всех столбцов, кроме объединения таблиц? Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Я думаю, проблема с перезаписью имени столбца. Сделай что-то вроде -

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

})
0 голосов
/ 05 января 2019

Я не знаю knex.js, но я бы попробовал database.select('table1.*')....

...