@rd100

Что ожидает в ответ Functional SQL запрос на js?

Задача, написать функцию Functional SQL
https://jsfiddle.net/e4dh8ovz/ при таком решении, оно не верно и я не совсем понимаю, что там хотят в ответ, ведь цепочка запроса составляется.

To do this, you must implement the query() function. This function returns and object with the next methods:

{
  select: ...,
  from: ...,
  where: ...,
  orderBy: ...,
  groupBy: ...,
  having: ...,
  execute: ...
}


Примеры ответов
SELECT * FROM numbers
var numbers = [1, 2, 3];
query().select().from(numbers).execute(); //[1, 2, 3]

//clauses order does not matter
query().from(numbers).select().execute(); //[1, 2, 3]


var persons = [
  {name: 'Peter', profession: 'teacher', age: 20, maritalStatus: 'married'},
  {name: 'Michael', profession: 'teacher', age: 50, maritalStatus: 'single'},
  {name: 'Peter', profession: 'teacher', age: 20, maritalStatus: 'married'},
  {name: 'Anna', profession: 'scientific', age: 20, maritalStatus: 'married'},
  {name: 'Rose', profession: 'scientific', age: 50, maritalStatus: 'married'},
  {name: 'Anna', profession: 'scientific', age: 20, maritalStatus: 'single'},
  {name: 'Anna', profession: 'politician', age: 50, maritalStatus: 'married'}
];

//SELECT * FROM persons
query().select().from(persons).execute(); // [{name: 'Peter',...}, {name: 'Michael', ...}]


function isEven(number) {
  return number % 2 === 0;
}

function parity(number) {
  return isEven(number) ? 'even' : 'odd';
}

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 

//SELECT * FROM numbers
query().select().from(numbers).execute(); //[1, 2, 3, 4, 5, 6, 7, 8, 9]

//SELECT * FROM numbers GROUP BY parity
query().select().from(numbers).groupBy(parity).execute(); //[["odd",[1,3,5,7,9]],["even",[2,4,6,8]]]
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
clauses order does not matter

А у вас
query().select('name').where('id=10').groupBy('age').execute();
// SELECT name WHERE id=10 GROUP BY age

query().groupBy('age').where('id=10').select('name').execute();
// GROUP BY age WHERE id=10SELECT name
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Внимательнее читайте задачу и смотрте перимеры.
1. У вас порядок операторов не проверяется, можно составить запрос FROM tbl SELECT * который очевидно не сработает.
2. Не HEAVING а HAVING.
3. Вы вообще неправильно поняли задачу, вам не строку с SQL запросом нужно сгенерировать, а обрабатывать объект с данными "в стиле SQL".
Посмотрите там в примерах какие данные на входе и что на выходе. К примеру функция parity передается в groupBy, такое вы в обычном SQL не провернете.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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