Mysql НЕ СУЩЕСТВУЕТ с двумя отдельными таблицами, кажется, не работает должным образом - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь обработать данные для каждого case_type для каждого state, city и court_complex, чтобы добиться этого, я создал таблицу с именем case_pointer, которая сохраняет комбинацию каждого извыше. В дополнение к case_pointer, который показывает обработанные случаи, я также создал таблицу с именем skippers, которая имеет идентификатор state_id, city_id, court_complex и case_type id. Шкиперы должны исключить штат, город или суд_комплекс из окончательной таблицы указателей

Вот мой запрос, но он работает наоборот. он показывает записи, которые существуют в шкиперах, а не исключая их.

SELECT cp.id    AS case_pointerID, 
       ct.id    AS caseTypeID, 
       ct.ct_id AS casetypeCode, 
       ct.cc_id AS cc_id, 
       ct.name  AS caseTypeName, 
       co.wid   AS complexCode, 
       co.id    AS complex_id, 
       co.name  AS courtName, 
       ci.id    AS city_id, 
       ci.wid   AS cityCode, 
       ci.name  AS cityName, 
       st.id    AS state_id, 
       st.name  AS stateName, 
       st.wid   AS stateCode 
FROM   case_types ct 
       LEFT JOIN court_complex co 
              ON ct.cc_id = co.id 
       LEFT JOIN city ci 
              ON co.city_id = ci.id 
       LEFT JOIN state st 
              ON ci.state_id = st.id 
       LEFT JOIN case_pointer cp 
              ON ct.id = cp.casetypeid 
WHERE NOT EXISTS  
        (SELECT 1 
        FROM case_pointer cp 
        WHERE EXISTS (SELECT null 
                      FROM skippers sk 
                      WHERE sk.state_id = cp.state_id)
         ) 
       OR cp.id IS NULL 
       ORDER BY st.id ASC, ct.id ASC, co.id ASC
       LIMIT 5

Пожалуйста, дайте мне знать, если я делаю что-то не так.

1 Ответ

0 голосов
/ 12 октября 2019

Ваш подзапрос NOT EXISTS, по-видимому, не связан с основным запросом (псевдоним 'cp' используется дважды), следовательно, неэффективность.

Кроме того, похоже на некоторые ошибки в скобках.

...