Как использовать ГДЕ (ВЫБРАТЬ ....) - PullRequest
0 голосов
/ 25 декабря 2018

Я делаю довольно сложную функцию отчетов со многими условиями, множеством панелей,

У меня есть запись в tbl_my_report

id    param_filter

101   FIND_IN_SET(t.owner_department,'0620510200,0621510200,0623510200')

Запрос:

SELECT * 
FROM tbl_abc t WHERE t.id = '1' AND 
      (SELECT mr.param_filter 
       FROM tbl_my_report mr WHERE mr.id = '101'
      )

Как использовать его в качестве допустимой строки условия?

Ответы [ 2 ]

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

Используйте это:

SELECT * FROM tbl_abc t WHERE  t.id = '1' IN (SELECT mr.param_filter
FROM tbl_my_report mr WHERE mr.id = '101' );
0 голосов
/ 25 декабря 2018

Во-первых, вы должны нормализовать свои данные и избавиться от FIND_IN_SET.Итак, должна быть какая-то таблица отдела, которая выглядит следующим образом:

id    | owner
'101' | '0620510200'
'101' | '0621510200'
'101' | '0623510200'

С этой таблицей вы можете изменить свой запрос на:

SELECT * 
FROM tbl_abc t
WHERE
    t.id = '1' AND
    EXISTS (SELECT 1 FROM department WHERE id = '101' AND owner = t.owner_department);

В целом, вам следует избегать сохраненияCSV или другие ненормализованные данные в таблицах вашей базы данных, по той причине, что это может усложнить запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...