Как вычесть результат запроса из другого результата запроса в MYSQL - PullRequest
5 голосов
/ 17 июня 2011

1-й запрос

   (SELECT a.cat_id, 
          a.cat_name, 
          a.cat_description, 
          b.subcat_name, 
          b.subcat_description 
     FROM trade_categories a 
LEFT JOIN trade_subcategories b ON a.cat_id = b.cat_id 
    WHERE a.cat_name LIKE '%catty%' 
       OR a.cat_description LIKE '%catty%') 
UNION 
  (SELECT c.cat_id, 
          d.cat_name, 
          d.cat_description, 
          c.subcat_name, 
          c.subcat_description 
     FROM trade_subcategories c 
LEFT JOIN trade_categories d ON c.cat_id = d.cat_id 
    WHERE c.subcat_name LIKE '%catty%' 
       OR c.subcat_description LIKE '%catty%') 

2-й запрос:

SELECT x.cat_id, 
       x.cat_name, 
       x.cat_description, 
       y.subcat_name, 
       y.subcat_description 
 FROM  trade_categories x 
  JOIN trade_subcategories y ON x.cat_id = y.cat_id 
 WHERE (   x.cat_name LIKE '%catty%' 
        OR x.cat_description LIKE '%catty%' ) 
   AND (   y.subcat_name NOT LIKE '%catty%' 
        OR y.subcat_description NOT LIKE '%catty%' )

Я хочу вычесть результат 2-го запроса из результата 1-го запроса.

Ответы [ 3 ]

11 голосов
/ 17 июня 2011

http://www.bitbybit.dk/carsten/blog/?p=71

или Пример:

SELECT Name FROM employee1  WHERE name NOT IN (SELECT name FROM employee2);
1 голос
/ 17 июня 2011

Я думаю, что вы можете сделать NOT IN или LEFT JOIN. Я бы предпочел СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ.

Так, например,

SELECT `QUERY_ONE`.*
FROM `QUERY_ONE`
LEFT JOIN `QUERY_TWO` USING (`cat_id`)
WHERE QUERY_TWO.cat_id IS NULL;

где QUERY_ONE и QUERY_TWO - псевдонимы для ваших двух запросов

0 голосов
/ 17 июня 2011
   SELECT a.cat_id, 
          a.cat_name, 
          a.cat_description, 
          b.subcat_name, 
          b.subcat_description 
     FROM trade_categories a 
LEFT JOIN trade_subcategories b ON a.cat_id = b.cat_id
    WHERE a.cat_name NOT LIKE '%catty%' 
      AND a.cat_description NOT LIKE '%catty%'
      AND (b.cat_id IS NULL
        OR b.subcat_name NOT LIKE '%catty%' AND b.subcat_description NOT LIKE '%catty%')

Или, если результаты двух запросов были сохранены во (временных) таблицах, вы можете использовать решение @ Abhay для них.

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