Преобразование строк в столбец в запросе mysql [дубликат]

Используя ES2017, вы должны иметь это как объявление функции

async function foo() {
    var response = await $.ajax({url: '...'})
    return response;
}

и выполнить его следующим образом.

(async function() {
    try {
        var result = await foo()
        console.log(result)
    } catch (e) {}
})()

Или синтаксис Promise

foo().then(response => {
    console.log(response)

}).catch(error => {
    console.log(error)

})
9
задан Taryn 1 October 2014 в 13:41
поделиться

1 ответ

Ваш текущий запрос близок, но я бы предложил несколько незначительных изменений, чтобы получить результат. Если вы хотите «сворачивать» данные с помощью JOINs, вам нужно будет различать, какое значение вы хотите вернуть из TableB в каждом последующем соединении.

Например, если вы хотите вернуть type=rev, вам нужно указать конкретный фильтр для этого значения. Затем вы сделаете то же самое с type=revision. Я также предлагаю использовать LEFT JOIN для присоединения к TableB, если у вас нет обоих значений type для каждого Acc_no, после чего вы все равно вернете данные.

select
  a.data,
  a.acc_no,
  b.type,
  b.amount,
  bb.type as type_1,
  bb.amount as amount_1
from tablea a
left join tableb b
  on a.acc_no = b.obj
  and b.type = 'rev'
left join tableb bb
  on a.acc_no = bb.obj
  and bb.type = 'revision';

См. SQL Fiddle with Demo

Вы также можете получить этот результат с помощью некоторой условной агрегации, тогда вам не обязательно присоединяться к TableB несколько раз:

select
  a.data,
  a.acc_no,
  max(case when b.type = 'rev' then b.type end) as type,
  max(case when b.type = 'rev' then b.Amount end) as Amount,
  max(case when b.type = 'revision' then b.type end) as type_1,
  max(case when b.type = 'revision' then b.Amount end) as Amount_1
from tablea a
left join tableb b
  on a.acc_no = b.obj
group by a.data, a.acc_no
order by a.acc_no;

См. SQL Fiddle with Demo

5
ответ дан Taryn 4 September 2018 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: