¿Dónde esta el bug?

¿Por qué no funciona esta consulta? ASP y access
SELECT tabla1.identif , tabla2.identif , tabla3.identif FROM tabla1 , tabla2, tabla3 WHERE (tabla1.opcion = tabla2.opcion = tabla3.opcion = 0) AND (tabla.username = tabla2.username = tabla3.username = " & username & ")
Donde identif es un valor constante igual al nombre de cada tabla ej: tabla1. Identif = "tabla1"
Y opción toma valores 0,1,2,3 en la base de datos
Respuesta
1
En lenguaje C y C++ se puede escribir esta expresión:
A=B=C;
Pero en la mayoría de lecguajes que no son C da problemas. Tiene que hacerse en dos pasos.
SELECT tabla1.identif , tabla2.identif , tabla3.identif FROM tabla1 , tabla2, tabla3
WHERE
(tabla1.opcion = tabla2.opcion ) and
(tabla2.opcion = tabla3.opcion = 0) AND
(tabla1.username = tabla2.username) and
(tabla2.username = tabla3.username = " & username & ")
Esto funciona, son tres tablas relacionadas por el campo OPCIÓN y USERNAME.
Para que la consulta se realice más rápida tienes que usar el JOIN para relacionar las tablas:
SELECT tabla1.identif , tabla2.identif , tabla3.identif
FROM
(tabla1 inner join tabla2 on ((tabla1.opcion = tabla2.opcion ) and tabla1.username = tabla2.username) ) inner join tabla3 on ((tabla2.opcion = tabla3.opcion = 0) and (tabla2.username = tabla3.username = " & username & "))
Y te olvidas del WHERE. Esto no es del todo correcto ya que el JOIN solo se debe hacer si son relaciones 'estáticas' (sin meter las variables). Te lo pongo para que intentes avanzar un paso más descubriendo el mundo de los JOIN (LEFT, RIGHT, INNER)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas