2011-06-17 24 views
5

primera consultaComo restar un resultado de la consulta de otro resultado de la consulta en MySQL

(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%') 

segunda consulta:

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%') 

quiero restar el segundo resultado de la consulta desde el 1 resultado de la consulta .

+2

Qué tal Query1 MINUS Query2 –

+0

Lo intenté pero muestra un error de sintaxis – merlin

+0

(1query) MINUS (2da consulta) – merlin

Respuesta

11

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

o ejemplo:

SELECT Name FROM employee1 WHERE name NOT IN (SELECT name FROM employee2); 
+1

Obtengo un 403 prohibido al hacer clic en ese enlace .... No tiene permiso para acceder a /carsten/blog/index.php en este servidor. Además, se encontró un error 403 Forbidden al intentar utilizar un ErrorDocument para manejar la petición. – JzInqXc9Dg

1

creo que se puede hacer ya sea un NO IN o una combinación izquierda. Prefiero un IZQUIERDA.

Así, por ejemplo,

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

donde QUERY_ONE y QUERY_TWO son alias para sus dos consultas

+0

voy a tratar esto. gracias por su respuesta – merlin

+0

sin almacenar los datos en tablas separadas ... que hay alguna otra Soltion para esto ... será v aplicar algunas condiciones o algo para vincular estos 2 consultas? – merlin

0
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%') 

O, si los resultados de las dos consultas han sido almacenados en tablas (temporales), podría usar la solución @Abhay en ellos.

+0

okk gracias ... déjame intentar ... – merlin

Cuestiones relacionadas