使用rails控制台sql查询字符串学习sql
从内部使用,我能够轻松、理智地获得:第一件商品的款式零售价格:使用rails控制台sql查询字符串学习sql,sql,ruby-on-rails,ruby,activerecord,sqlite,Sql,Ruby On Rails,Ruby,Activerecord,Sqlite,从内部使用,我能够轻松、理智地获得:第一件商品的款式零售价格: [25] pry(main)> Item.first.style.retail_price Item Load (0.2ms) SELECT "items".* FROM "items" ORDER BY "items"."id" ASC LIMIT 1 Style Load (0.1ms) SELECT "styles".* FROM "styles" WHERE "styles"."id" = ? LIM
[25] pry(main)> Item.first.style.retail_price
Item Load (0.2ms) SELECT "items".* FROM "items" ORDER BY "items"."id" ASC LIMIT 1
Style Load (0.1ms) SELECT "styles".* FROM "styles" WHERE "styles"."id" = ? LIMIT 1 [["id", 1]]
=> #<BigDecimal:7fe7a6bc7678,'0.6E2',9(27)>
另外,当我尝试使用相同的查询字符串时,会出现语法错误:
rails db
SQLite version 3.14.0 2016-07-26 15:17:14
Enter ".help" for usage hints.
sqlite> SELECT "items".* FROM "items" ORDER BY "items"."id" ASC LIMIT 1; SELECT "styles".* FROM "styles" WHERE "styles"."id" = ? LIMIT 1 [["id", 1]];
1|M|Purple|sellable|||1|2017-02-04 04:47:09.415828|2017-02-04 04:47:09.415828|
Error: near "[["id", 1]": syntax error
sqlite>
3个问题:
ActiveRecord::Base.connection.execute需要什么字符串来返回类似于60.0的预期结果?
rails db需要什么字符串?
如何将rails控制台提供给我的sql字符串转换为原始sql查询字符串(可与ActiveRecord::Base.connection.execute和rails db一起使用)的一般模式是什么?
如果您只想从一个不动产中获得一个字段,则必须在SQL中的select子句中指定它。像这样的
SELECT styles.retail_price FROM styles WHERE styles.id = 1
在本例中,如果使用rails的execute方法,您将只获得零售价格,但它是一个数组。如果只需要单个值,请使用select_value方法,而不是execute。像
在sqlite3终端中,由于这个[[id,1]],您获得了一个语法错误。这是用于准备语句的rails/应用程序级别的东西,但不是有效的SQL。你应该像我一样替换身份证
SELECT styles.retail_price FROM styles WHERE styles.id = 1
ActiveRecord::Base.connection.select_value("SELECT styles.retail_price FROM styles WHERE styles.id = 1")