• Publicidad

Comando EXISTS de MySQL

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Comando EXISTS de MySQL

Notapor dacons » 2006-06-11 13:45 @615

Hola de nuevo, mi problema es que necesito sacar las filas de la seients que no estan en la tabla entrades, cuando lo hago con exists me sale las que coinciden, pero cuando lo hago con not exists no me selecciona ninguna fila

select zona, fila, numero, nom
from espectacles esp, entrades e
where esp.codi_recinte=e.codi_recinte
and nom like 'El país de les Cent Paraules'
and NOT EXISTS (select zona, fila, numero
from seients s, espectacles esp
where esp.codi_recinte=s.codi_recinte
and nom like 'El país de les Cent Paraules')
order by zona

llevo horas dandole vueltas pero no hay forma de sacarlo, una ayudita porfa
dacons
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-02-27 04:15 @219

Publicidad

Notapor macgregor » 2006-06-12 05:17 @262

Código: Seleccionar todo
select zona, fila, numero, nom
from espectacles esp, entrades e
where esp.codi_recinte=e.codi_recinte
  and nom like 'El país de les Cent Paraules'
  and NOT EXISTS (select zona, fila, numero
                            from seients s, espectacles esp
                            where esp.codi_recinte=s.codi_recinte
                               and nom like 'El país de les Cent Paraules'
                            )
order by zona

Al ver esta consulta me surge una duda respecto al origen de "nom" ya que no indicas con ningun prefijo a que tabla pertenece.

Estaría bien saber que campos tiene cada tabla para no tener ningun tipo de dudas a la hora de responderte, sin embargo entiendo que en la consulta y en la subconsulta "non" hace referencia a la misma tabla (tabla espectacles).
Otra cosa a comentar, no se que SGBD utilizas, pero independientemente del que utilizas al no poner ningún caracter comodín en la expresion del 'LIKE' solo te devolverá las que coincidan exactamente, es decir esa expresión equivale a un '='.
En Oracle: esp.nom like '%Cent Paraules%'
En Access: esp.nom like "*Cent Paraules*" (supongo que en MSSqlServer tambien)
Si tu SGBD es otro busca cual es el carácter comodín.

Respecto a lo que pedías.... "sacar las filas de seients que no estan en la tabla entrades"

Si e.codi_recinte es la clave primaria de la tabla 'espectacles' y las tablas 'entrades' y 'seients' tienen ambas ese campo como clave foránea a 'espectacles' puedes hacer algo tan sencillo como

Código: Seleccionar todo
select *
from seients s
where s.codi_recinte not in (select distinct e.codi_recinte from entrades e)
and nom like '%Cent Paraules%'


Si esto no resuelve tu problema indica todos los campos de tus tablas y te propondré otra solución.
MACGREGOR [TM]
Avatar de Usuario
macgregor
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2004-12-09 07:32 @355
Ubicación: españa

Notapor dacons » 2006-06-13 07:01 @334

muchas gracias ya la resolvi
dacons
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-02-27 04:15 @219


Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados