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
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
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
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