problema con consulta

Iniciado por m@o_614, 30 Mayo 2014, 03:32 AM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

Saludos tengo las siguientes tablas

BAR(id,nombre)
CERVEZA(id,nombre)
CLIENTE(id,nombre)
SIRVE(idBAR,idCERVEZA)
ASISTE(idCLIENTE,idBAR)
GUSTA(idCLIENTE,idCERVEZA)

y tengo la consulta que dice nombrar los nombres de las cervezas que no se sirven en el bar 'TARROS'

lo que llevo es esto:

SELECT c.nombre FROM BAR AS b, CERVEZA AS c, SIRVE AS s
WHERE c.id=s.idCERVEZA AND b.id=s.idBAR AND b.nombre='TARROS'

pero a partir de ahi ya no se como seguir

gracias

elezekiel

#1
Creaste la consulta y te une las cervezas que se sirven en el Bar, para hacer las que NO se sirven en el bar tenes que hacer asi

Select idCerveza  from Sirve
Where BAR.idBAR <> Sirve.IdBAR


Adaptalo a tu codigo y funcionara.

Lo que hace es comparar el id del bar que se selecciona y le pide que muestre el id de la cerveza siempre y cuando NO coincida con el ID del Bar(en tabla SIRVE).


PD: cuando intentas "acortar" los nombres de tablas al inicio de la consulta la hace mas tediosa entender, es un consejo nomas!

Saluddddd

m@o_614

muchas gracias elezekiel por tu respuesta, una ultima duda si la consulta dice:

Combinando una proyección y un producto cartesiano listar los nombres de todas las personas a las que les guste la cerveza 'HEINEKEN'. yo si se lo que es un producto cartesiano pero no se a que se refiere con proyeccion, entonces hice lo siguiente

SELECT p.nombre
FROM CLIENTE AS p, CERVEZA AS c, GUSTA AS g
WHERE g.idCLIENTE=p.id AND g.idCERVEZA=c.id
AND c.nombre = 'HEINEKEN';

pero no se si estoy en lo correcto

de nuevo gracias

elezekiel

La proyeccion es cuando seleccionas x cantidad de registros de una tabla, es decir, cuando colocas:

Select * From BAR

Ahi no haces proyeccion, la proyeccion la haces asi:

Select idCerveza  from Sirve
Where BAR.idBAR <> Sirve.IdBAR


Pasandotelo en limpio es cuando seleccionas un campo(atributo) o varios (de la relacion en cuestion) pero no usas el "global" (*)

No se si me entendiste.. ya de ahi podes finalizar tu consulta!

Saluuddd