#ruby #sequel
#ruby #продолжение
Вопрос:
Кажется, я не могу правильно выполнить этот запрос. Продолжение реализации:
SELECT count(id) FROM users WHERE username = "alpha" AND status = "new"
Вот что у меня есть до сих пор:
db = Sequel.connect('postgres://me:pw@0.0.0.0:5432/dbname)
u = db[:users]
puts "Total users: #{u.count}" # this is correct
puts db.where(:username => "alpha", :status => "new").count
Я пробовал различные прямые SQL, и это, похоже, тоже не работает. Похоже, что это исправимо, но подключение в порядке, и я могу воспроизвести точный SQL, который не возвращается таким же.
Ответ №1:
Вы забыли выбрать таблицу. Вы хотите это:
db[:users].where(username:'alpha', status:'new').count
Для SQLite3 это создает запрос:
SELECT count(*) AS 'count'
FROM `users`
WHERE ((`username` = 'alpha')
AND (`status` = 'new'))
LIMIT 1
Сообщение об ошибке, которое вы должны были получить, было:
NoMethodError: undefined method `where' for #<Sequel::SQLite::Database: ...>
Если вы увидели эту ошибку и прочитали ее, она должна была сообщить вам, что вызов db.where
был неправильным.
В дополнение к выполнению этой работы с собственным Sequel DSL, вы также всегда можете запускать необработанные SQL-команды в Sequel.
Комментарии:
1. Вторая строка — это таблица. Я действительно оставил это в последней строке.
2. @Rich_F Это расстраивает. Пожалуйста, скопируйте и вставьте точный код, не вводите на лету. Пожалуйста, отредактируйте свой вопрос с вашим фактическим кодом и фактической ошибкой, которую вы получаете.
3. Это вставленный текст. Я перепробовал много вариантов, и ни один из них не сработал. Я не перепечатываю свой код здесь.
4. 1) Это не может быть фактическим кодом. В первой строке содержится синтаксическая ошибка. 2) Вы говорите, что пробовали это с таблицей, но ваш код этого не показывает. 3) Вы все еще не показали ошибку, которую вы получаете, или то, что вы ожидали, и что вы получили вместо этого. Сказать, что это «не работает», недостаточно информации, чтобы мы могли сделать больше, чем просто догадаться о проблеме.
5. Кроме того, какие «различные прямые SQL» вы пробовали, с помощью какого кода и в чем заключалась ошибка или неправильный результат, который вышел с другой стороны?