Объединить 2 результата в один в SQL - PullRequest
0 голосов
/ 27 ноября 2018

Обновление Слияние

Cama::PostType.first.posts.joins(:custom_field_values)
.where("cama_custom_fields_relationships.custom_field_slug = ? AND 
cama_custom_fields_relationships.value LIKE ?","localization", 
"%Paris%").merge(Cama::PostType.first.posts.joins(:custom_field_values)
.where("cama_custom_fields_relationships.custom_field_slug = ? AND 
cama_custom_fields_relationships.value = ?","type-localization", "2"))

Это также не работает.Когда выполняется seperatelty, он возвращает то же AssociationRelation.Я думаю, это работает только для ActiveRecord: отношение

обновление Я думаю, что я ищу INTERSECT, но не знаю, как его использовать, где

Есть еще одна тема, котораяЯ создал и до сих пор не могу найти ответ, как его оптимизировать.

Идет вот так

Мне нужно найти "сообщения" по значениям "other_model".Другая модель имеет отношение к сообщениям через другую таблицу, но давайте сделаем это проще.Когда я делаю

Foo.joins(:other_model).where("other_model.value = ? AND other_model.value = ?", "one", "two") 

Это, конечно, не даст мне никакого результата, потому что это противоречит самому себе.

Когда я делаю с ИЛИ вместо И

Foo.joins(:other_model).where("other_model.value = ? OR other_model.value = ?", "one", "two") 

Он находит сообщения для меня, но ... либо имеет одно значение, либо имеет второе значение и ...

Я хочу найти сообщения на основе other_model.value = one и other_model.value = two

Что означает, что он ищет 2 отдельных результата, а затем мне нужно просто вернуть идентификаторы, которые покрывают друг друга ... Имеет ли это смысл?

1 Ответ

0 голосов
/ 27 ноября 2018

Я думаю, что вы ищете запрос как:

Foo
  .joins(:other_model)
  .where('other_model.value = ? OR other_model.value = ?', 'one', 'two') 
  .group('foos.id')
  .having('COUNT(other_models.id) >= 2')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...