Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.03.2019, 12:49
Новичок на форуме
Отправить личное сообщение для werter1995 Посмотреть профиль Найти все сообщения от werter1995
 
Регистрация: 07.03.2019
Сообщений: 7

Как узнать количество строк в таблице Mysql на Javascript
Написал данный код, который достаёт из моей таблицы SQL все строки, в которых direction = 1

const sqlite3 =  require('sqlite3').verbose();
 
// open the database
let db = new sqlite3.Database('crdxims.db3');

 
let sql = `SELECT id id,
                  direction direction
           FROM ACS_EVENT
           WHERE direction =  ?`;
let direction = 1

// first row only
db.each(sql, [direction], (err,  row)  => {
  if (err) {
    return console.error(err.message);
  }
   return row
    ? console.log(row.id, row.direction)
    : console.log('No {id}');
 
});

// close the database connection
db.close( );


Мне надо, чтобы выводились не все строки, а количество этих самых строк с direction = 1. Как это можно сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 08.03.2019, 13:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от werter1995
Как это можно сделать?
Запрашивать требуемое:

SELECT COUNT(*) AS total FROM asc_event WHERE direction = ?

И sqlite, это не MySQL.
Ответить с цитированием
  #3 (permalink)  
Старый 08.03.2019, 13:23
Новичок на форуме
Отправить личное сообщение для werter1995 Посмотреть профиль Найти все сообщения от werter1995
 
Регистрация: 07.03.2019
Сообщений: 7

Сообщение от laimas Посмотреть сообщение
Запрашивать требуемое:

SELECT COUNT(*) AS total FROM asc_event WHERE direction = ?

И sqlite, это не MySQL.
Да, sqlite, затупил.

Так?
const sqlite3 =  require('sqlite3').verbose();
 
// open the database
let db = new sqlite3.Database('crdxims.db3');

 
let sql = `SELECT id id,
                  direction direction
           FROM ACS_EVENT
           WHERE direction =  ?`
let direction = 1
let sum = `SELECT COUNT(*) AS total FROM asc_event WHERE direction = ?`


// first row only
db.each(sql, [sum], (err,  row)  => {
  if (err) {
    return console.error(err.message);
  }
   return row
    ? console.log(row.sum)
    : console.log('No {sum}');
 
});

// close the database connection
db.close( );


Если так, то при запросе через Node.js количество строк не указывает, выводит просто пустую строку.
.

Если нет, то простите, туплю. Как тогда?
Ответить с цитированием
  #4 (permalink)  
Старый 08.03.2019, 13:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Я не знаю Node.js, чего там и как я сказать не могу, но если вам нужно узнать только количество записей в таблице, то зачем вы получаете сами записи? Получить количество записей, это COUNT(*) AS алиас, и после запроса и выводите алиас, который и будет содержать количество записей в таблице.
Ответить с цитированием
  #5 (permalink)  
Старый 08.03.2019, 13:46
Новичок на форуме
Отправить личное сообщение для werter1995 Посмотреть профиль Найти все сообщения от werter1995
 
Регистрация: 07.03.2019
Сообщений: 7

Сообщение от laimas Посмотреть сообщение
Я не знаю Node.js, чего там и как я сказать не могу, но если вам нужно узнать только количество записей в таблице, то зачем вы получаете сами записи? Получить количество записей, это COUNT(*) AS алиас, и после запроса и выводите алиас, который и будет содержать количество записей в таблице.
При вот таком коде:
const sqlite3 =  require('sqlite3').verbose();
 
// open the database
let db = new sqlite3.Database('crdxims.db3');

let sql = `SELECT COUNT(*) AS total FROM ACS_EVENT WHERE direction = ?`



// first row only
db.each(sql, [total], (err,  row)  => {
  if (err) {
    return console.error(err.message);
  }
   return row
    ? console.log(row.total)
    : console.log('No {total}');
 
});

// close the database connection
db.close( );

Выводит:

То есть модификатор не объявлен.
Если объявить его строчкой
let total

То выводит число 0.

Что конкретно нужно сделать, чтобы модификатор был объявлен?

Последний раз редактировалось werter1995, 08.03.2019 в 13:49.
Ответить с цитированием
  #6 (permalink)  
Старый 08.03.2019, 13:50
Новичок на форуме
Отправить личное сообщение для werter1995 Посмотреть профиль Найти все сообщения от werter1995
 
Регистрация: 07.03.2019
Сообщений: 7

Сообщение от werter1995 Посмотреть сообщение
При вот таком коде:
const sqlite3 =  require('sqlite3').verbose();
 
// open the database
let db = new sqlite3.Database('crdxims.db3');

let sql = `SELECT COUNT(*) AS total FROM ACS_EVENT WHERE direction = ?`



// first row only
db.each(sql, [total], (err,  row)  => {
  if (err) {
    return console.error(err.message);
  }
   return row
    ? console.log(row.total)
    : console.log('No {total}');
 
});

// close the database connection
db.close( );

Выводит:

То есть модификатор не объявлен.
Если объявить его строчкой
let total

То выводит число 0.

Что конкретно нужно сделать, чтобы модификатор был объявлен?
Блин, мой тупняк. Нашёл.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать текущий номер недели, или количество дней в текущем году. Hedkost Общие вопросы Javascript 12 17.11.2015 16:28
Как узнать какой JavaScript установлен на чужом сайте? Меркава Общие вопросы Javascript 1 25.02.2015 10:16
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
как узнать количество точек в строке? robinner Общие вопросы Javascript 2 16.06.2010 21:13
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54