Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用rails控制台sql查询字符串学习sql_Sql_Ruby On Rails_Ruby_Activerecord_Sqlite - Fatal编程技术网

使用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")