Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как узнать количество строк в таблице Mysql на Javascript (https://javascript.ru/forum/misc/76982-kak-uznat-kolichestvo-strok-v-tablice-mysql-na-javascript.html)

werter1995 08.03.2019 12:49

Как узнать количество строк в таблице 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. Как это можно сделать?:help:

laimas 08.03.2019 13:09

Цитата:

Сообщение от werter1995
Как это можно сделать?

Запрашивать требуемое:

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

И sqlite, это не MySQL.

werter1995 08.03.2019 13:23

Цитата:

Сообщение от laimas (Сообщение 504536)
Запрашивать требуемое:

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 количество строк не указывает, выводит просто пустую строку.
.

Если нет, то простите, туплю. Как тогда?

laimas 08.03.2019 13:33

Я не знаю Node.js, чего там и как я сказать не могу, но если вам нужно узнать только количество записей в таблице, то зачем вы получаете сами записи? Получить количество записей, это COUNT(*) AS алиас, и после запроса и выводите алиас, который и будет содержать количество записей в таблице.

werter1995 08.03.2019 13:46

Цитата:

Сообщение от laimas (Сообщение 504538)
Я не знаю 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:50

Цитата:

Сообщение от werter1995 (Сообщение 504539)
При вот таком коде:
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.

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

Блин, мой тупняк. Нашёл.


Часовой пояс GMT +3, время: 12:16.