Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] En MYSQL, seleccionar todas las empresas que cuenten con servicios, excluyendo dos

Estas en el tema de En MYSQL, seleccionar todas las empresas que cuenten con servicios, excluyendo dos en el foro de Bases de Datos General en Foros del Web. Estimados amigos: Seguro este tema ya se abordó antes, sólo que no he sabido cómo llegar a él. Tengo problemas con el resultado de una ...
  #1 (permalink)  
Antiguo 05/06/2015, 18:30
Avatar de CarlosMex  
Fecha de Ingreso: mayo-2005
Mensajes: 67
Antigüedad: 19 años, 6 meses
Puntos: 0
En MYSQL, seleccionar todas las empresas que cuenten con servicios, excluyendo dos

Estimados amigos:

Seguro este tema ya se abordó antes, sólo que no he sabido cómo llegar a él.

Tengo problemas con el resultado de una consulta para seleccionar todo, excepto los que tenga que excluir. Tengo las siguientes tres consultas, no se cómo resolver la número 3:

Consulta 1.- Seleccionar todas las empresas por servicio que den Consultoría. Aquí no tengo problemas.
Consulta 2.- Seleccionar todas las empresas por servicio que den Mantenimiento. Aquí tampoco tengo problemas.
Consulta 3.- Seleccionar todas las empresas que den servicios, pero excluir las que den Consultoría y Mantenimiento. Aquí es donde tengo problema.

Tengo una tabla empresas

Código:
idempresa | nombreEmpresa
1	|	Empresa A
2	|	Empresa B
3	|	Empresa C
4	|	Empresa D
5	|	Empresa E
y otra tabla servicios,

Código:
idservicio | tipoServicio
1	|	consultoria
2	|	mantenimiento
3	|	refacciones
4	|	herrería
5	|	carpinteria
6	|	plomería
7	|	albañilería

para vincular todos los servicios que ofrece una empresa lo hago con la tabla servicios_empresa

Código:
idempresa | idservicio

1	|	1
1	|	3
1	|	6
2	|	3
2	|	7
2	|	5
3	|	1
4	|	2
5	|	2
5	|	3
En la consulta 1, seleccionar las que ofrecen consultoría, lo resuelvo así:

Código:
SELECT em.idempresa, em.nombreEmpresa, ser.idservicio, ser.tipoServicio 
FROM empresas AS em, servicios AS ser, servicios_empresa AS serem
WHERE em.idempresa = serem.idempresa AND  ser.idservicio = serem.idservicio AND ser.idservicio= 1
En la consulta 2, seleccionar las que ofrecen mantenimiento, lo resuelvo así:

Código:
SELECT em.idempresa, em.nombreEmpresa, ser.idservicio, ser.tipoServicio 
FROM empresas AS em, servicios AS ser, servicios_empresa AS serem
WHERE em.idempresa = serem.idempresa AND  ser.idservicio = serem.idservicio AND ser.idservicio= 2
En la consulta 3 debo seleccionar todos, excepto los que tienen el idservicio 1 y 2.

¿Podrían ayudarme?
Gracias por adelantado.
__________________
CarlosMex
  #2 (permalink)  
Antiguo 05/06/2015, 18:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: En MYSQL, seleccionar todas las empresas que cuenten con servicios, excluy

Código MySQL:
Ver original
  1. SELECT em.idempresa, em.nombreEmpresa, ser.idservicio, ser.tipoServicio
  2. FROM empresas AS em, servicios AS ser, servicios_empresa AS serem
  3. WHERE em.idempresa = serem.idempresa AND  ser.idservicio = serem.idservicio AND ser.idservicio not in (1,2)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 05/06/2015, 18:49
Avatar de CarlosMex  
Fecha de Ingreso: mayo-2005
Mensajes: 67
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: En MYSQL, seleccionar todas las empresas que cuenten con servicios, excluy

Muchas gracias, Libras!!!

Acabo de aplicar tu solución y trabaja perfectamente.

Además de la solución, agradezco tu rápida respuesta.

Saludos
__________________
CarlosMex

Etiquetas: empresas, mysql, select, servicios, tabla, todas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.