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

Consulta SQL

Estas en el tema de Consulta SQL en el foro de Mysql en Foros del Web. Hola a todos, este es mi primer ves en esta comunidad y soy novato asi que por favor disculpen si este post esta repetido. Bueno ...
  #1 (permalink)  
Antiguo 02/06/2011, 01:13
 
Fecha de Ingreso: junio-2011
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta Consulta SQL

Hola a todos, este es mi primer ves en esta comunidad y soy novato asi que por favor disculpen si este post esta repetido.

Bueno mi problema es el siguiente: tengo tres tablas
  • restaurante
  • presta: contiene información de los servicios prestados por el restaurante (7 servicios)
  • ofrece: contiene información de los tipos de comida ofrecidos por el restaurante (20 tipos de comida)

La consulta que necesito, me debe traer los restaurantes que para una lista dada (la lista puede tener uno o mas tipos de comida, para el caso de la tabla ofrece, o uno o mas servicios para el caso de presta) me traiga solo los restaurantes que cumplan con todos los id's de servicios o comidas contenidos en la lista.

La consulta que tengo es esta, para una lista ejemplo (1,2,3):

SELECT DISTINCT(R.id), nombre, correo, ...
FROM restaurante R, presta P
WHERE R.id = P.servicio_id
AND P.servicio_id IN (1,2,3)

La idea es que me traiga los restaurantes que presten los tres servicios, pero me trae también los que prestan uno de los servicios o combinaciones.

Esta misma consulta la estoy usando para cocina. También intente traer los restaurantes que presten un listado de servicios y un listado de tipos de cocina pero el resútado fue el mismo.

SELECT DISTINCT (
R.id
), R.nombre

FROM restaurante R, presta P, servicios S, ofrece O

WHERE P.servicio_id in (1,3,7)

AND O.tcocina_id in (2,5,9,7)

AND R.id = P.restaurante_id

AND R.id = O.restaurante_id

De antemano agradezco su colaboración.
  #2 (permalink)  
Antiguo 02/06/2011, 08:51
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Consulta SQL

Si cumple los tres y quitas el DISTINCT saldrá tres veces, si cumple una, sólo una vez. Si lanzas una query parecida a esta, te dará los que cumplen los tres

Código MySQL:
Ver original
  1. SELECT R.id, count(*) as A
  2. FROM restaurante R
  3. INNER JOIN presta P ON
  4. R.id = P.servicio_id
  5. WHERE P.servicio_id IN (1,2,3)
  6. HAVING A = 3

Etiquetas: sql
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 10:46.