私は車両検索リソースに取り組んでいます。現在のクエリに基づいて、MySQLは正しい結果を返しています。しかし、結果は私が探しているものではありません。クエリに間違いがありますが、それを修正する方法がわかりません。希望の結果を返すためにMySQLクエリを修正しようとしました。
車テーブル
+----+--------+--------------+---------------------+---------------------+
| id | active | label | created_at | updated_at |
+----+--------+--------------+---------------------+---------------------+
| 1 | 1 | test vehicle | 2016-03-14 15:34:00 | 2016-03-14 15:34:00 |
+----+--------+--------------+---------------------+---------------------+
vehicles_metasテーブル
+----+--------+------------+------------+------------------+---------------------+---------------------+
| id | active | vehicle_id | meta_key | meta_value | created_at | updated_at |
+----+--------+------------+------------+------------------+---------------------+---------------------+
| 1 | 1 | 1 | type | Performance Boat | 2016-03-14 15:36:00 | 2016-03-14 15:36:00 |
| 2 | 1 | 1 | make | Deep Impact | 2016-03-14 15:36:00 | 2016-03-14 15:36:00 |
| 3 | 1 | 1 | model | Cuddy Cabin | 2016-03-14 15:36:00 | 2016-03-14 15:36:00 |
| 4 | 1 | 1 | year | 2014 | 2016-03-14 15:36:00 | 2016-03-14 15:36:00 |
| 5 | 1 | 1 | length | 39 | 2016-03-14 15:36:00 | 2016-03-14 15:36:00 |
| 6 | 1 | 1 | propulsion | (4) Mercury 350 | 2016-03-14 15:36:00 | 2016-03-14 15:36:00 |
| 7 | 1 | 1 | hull | fiberglass | 2016-03-14 15:36:00 | 2016-03-14 15:36:00 |
| 8 | 1 | 1 | price | 399000 | 2016-03-14 15:36:00 | 2016-03-14 15:36:00 |
+----+--------+------------+------------+------------------+---------------------+---------------------+
現在のmysqlのクエリが
:ここでははテーブルです今のよう
select `vehicles`.`id` from `vehicles` inner join `vehicle_metas` on `vehicle_metas`.`vehicle_id` = `vehicles`.`id` where (`vehicle_metas`.`meta_key` = 'type' and `vehicle_metas`.`meta_value` LIKE '%perf%') and (`vehicle_metas`.`meta_key` = 'model' and `vehicle_metas`.`meta_value` LIKE '%cuddy%')
、ゼロ行のクエリ結果が返されます。 2つのmeta_key & meta_value
クエリフィルタのうち1つだけを使用すると、レコードvehicle_id: 1
が返されます。
私は単純にすべてのmeta
クエリーフィルタと一致する車両IDを返すようにしようとしています。
注:私たちは、このプロジェクトにLaravel 5.2を使用しています。 – user2977468