как сделать условия запроса выбора на основе категории - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть такая таблица

id  category  minLimit  maxLimit  count  
11  Bannana     100       200      50
12  Bannana     200       300      20  
13  Bannana     300       400      40  
14  Apple       100       200      60  
15  Apple       200       300      70  

Теперь я выполню запрос и верну Bannana По лимиту 250 и Apple по лимиту 150. В этом случае я могу выполнить запрос q следующим образом:

select  
   * 
from main_table 
where 
   (category = 'Bannana' and minLimit <= 250 and maxLimit > 250) or 
   (category = 'Apple' and minLimit <= 150 and maxLimit > 150)

В другом решении я могу создать дополнительную таблицу, вставить мои условия условия where (Bannana 250, Apple 150) и выполнить соединение с main_table.Я хочу знать, какое решение наиболее эффективно?

Примечание: мои условия условия where (Bannana - 250, Apple 150) в реальном случае составляют более 5000 записей

1 Ответ

0 голосов
/ 28 декабря 2018

Нет, нет более эффективного способа достичь того, что вы просите, чем запросить БД сделать то, для чего она была создана: объединить данные.Вставьте 5000 записей в другую таблицу и затем:

create table conditions_table(category VARCHAR(20), limit INT);
insert into conditions_table('Bannana', 250);
insert into conditions_table('Apple', 150);

Затем:

select  
   * 
from 
  main_table m
  INNER JOIN 
  conditions_table c --could be temp table, real table, table var etc
  ON
   c.category = m.category and
   c.limit >= m.minLimit and
   c.limit < m.maxlimit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...