ОПЕРАТОР ВЫБОРА SQL в ПУНКТЕ КОЛИЧЕСТВА

Проблема здесь заключается в использовании той же самой переменной date в цикле. Вам нужно заново инициализировать его.

Как можно видеть в разделе Значение параметра в ссылке здесь . Нулевые и отрицательные значения в setDate() устанавливают дату предыдущего месяца.

Следовательно, в setDate(0) значение даты установлено на последний день февраля. Теперь, когда вы используете ту же переменную, setDate(-1) берет предыдущий месяц с февраля, следовательно, вы получаете январь.

Вам нужно изменить код на что-то вроде этого:

generate() {
    this.date_new = [];
    var date1 = new Date();
    for (var i = 0; i < 7; i++) {
        // re-initialize date
        var date = new Date();
        date.setDate(date1.getDate() - i);
        var a = date.toString();
        var str = this.convert(a);
        this.date_new.push(str);
    }
}

Надеюсь, это поможет:)

5
задан Dave Jarvis 22 August 2012 в 21:19
поделиться

5 ответов

использовать левое внешнее объединение:

SELECT b.Book_Title, COUNT(s.Book_ID) 
FROM Book b left outer join Sold s on b.Book_ID = s.Book_ID 
GROUP BY b.Book_Title;
9
ответ дан 14 December 2019 в 01:16
поделиться

Вы также можете использовать коррелированный подзапрос в предложении select :

select b.book_title, (select count(*) from sold s where s.book_id=b.book_id) from book b

Ему не нужна ни группа по , ни external join s, который может быть медленным для очень большого числа строк.

1
ответ дан 14 December 2019 в 01:16
поделиться

Как сказал @Vincent, вам нужно внешнее соединение. В последнее время я мало работал с Oracle, но его собственный синтаксис внешнего соединения довольно причудлив. (Я не знаю, догнали ли они ANSI по этому поводу.)

Собственный синтаксис:

  SELECT b.Book_Title,
         COUNT(s.Book_ID)
    FROM Book b,
         Sold s
   WHERE b.Book_ID = s.Book_ID (+)
GROUP BY b.Book_Title;
0
ответ дан 14 December 2019 в 01:16
поделиться

Вы должны получить количество в подзапросе и оставить внешнее соединение с ним следующим образом:

select b.book_title, 
   case when s.book_id is null then 0 
       else s.salesCount end as Sales
from book b
left outer join 
  (select count(*) as salesCount, book_id from sales group by book_id) s on b.book_id = s.book_id
0
ответ дан 14 December 2019 в 01:16
поделиться

сделать другое объединение из книги в проданную. Вы можете все еще получить ноль за счет, но вы решаете это, добавляя NVL поверх этого ...

-1
ответ дан 14 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

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