60519
なぜエラーになるのでしょうか？

> ActionView::Template::Error (SQLite3::SQLException: near "all": syntax  
>  error: SELECT "items".* FROM "items" WHERE (h >= 0) AND (w >= 0) AND  
>  (d >= 0) AND (weight >= 0) AND (all >= 0) ORDER BY "items"."price"  
>  ASC):
```

    @items = Item.where('h >= ?',height).where('w >= ?',width).where('d >= ?',depth).where('weight >= ?',weight).where('all >= ?',total).order(price: :asc)
    
```

ここで、

```

    .where('all >= ?',total)
    
```

を省くと、正常に動きます。

データのカラムは以下の通りです。

```

    class CreateItems < ActiveRecord::Migration[5.1]
      def change
        create_table :items do |t|
          t.integer :h
          t.integer :w
          t.integer :d
    
          t.timestamps
        end
      end
    end
    
```

と

```

    class AddColumnsToItems < ActiveRecord::Migration[5.1]
      def change
        add_column :items, :name, :string
        add_column :items, :price, :integer
        add_column :items, :weight, :integer
    
      end
    end
    
```

です。どうかよろしくお願いします。
CC BY-SA 4.0
2019-11-14T11:09:39.980
60516
2019-11-15T06:45:57.827
2019-11-15T06:45:57.827
34550
34550
question
ruby-on-rails ruby mysql sql rails-activerecord
where句のエラーについて
SQLがsyntax errorになっているのは、ALLがSQLiteのSQLの予約語だからじゃないかと思います。 他のRDBMSでも予約語だと思います。
(UNION ALLのため

<https://www.sqlite.org/lang_keywords.html>

```

    where("`all` > 0")
    
```

のようにクオートが必要なんじゃないかと思います。

コマンドラインからはこのように確認できます。

```

    $ sqlite3
    SQLite version 3.24.0 2018-06-04 14:10:15
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> select * from hoge where all > 0;
    Error: near "all": syntax error
    sqlite> select * from hoge where `all` > 0;
    Error: no such table: hose
    
```

ただし、allカラムも定義にはないようなので、このままではSQLは失敗するとは思います。
CC BY-SA 4.0
2019-11-14T11:36:14.917
60519
2019-11-14T11:50:37.800
2019-11-14T11:50:37.800
36627
36627
60516
answer