Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/09/2009, 02:40
Avatar de pgsqlesorg
pgsqlesorg
 
Fecha de Ingreso: septiembre-2009
Ubicación: Noruega
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Consultas complejas

Separar las tablas con comas en el FROM del comando significa en PostgreSQL lo mismo que si usaramos un INNER JOIN ON (TRUE) o un CROSS JOIN entre estas tablas. Todos estos tipos de JOIN son en realidad el producto cartesiano de las tablas en cuestion.

El problema y el error que te da es por usar unos 'joins' definidos con comas y otros con la sentencia JOIN en la misma consulta.

Segun el estandar SQL la palabra JOIN tiene mayor prioridad que la coma cuando se definen joins y se evalua internamente la consulta. Por ello, el alias 'u' que defines con '"users" AS u' no esta disponible en el 'ON contact_id = u.user_contact'.

No definas joins de dos maneras diferentes en la misma consulta. Define '"projects" AS pr,"users" AS u,"forums" AS forums' con sentencias JOIN.

Otra cosa que deberias de acostumbrarte a usar es calificar los nombre de las columnas que utilices (nombre_tabla.nombre_columna o alias_tabla.nombre_columna) cuando haces un JOIN entre tablas. Con esto te evitaras problemas si las tablas involucradas tienen alguna columna con el mismo nombre

--
Rafael Martinez
PostgreSQL-es.org

Última edición por pgsqlesorg; 08/09/2009 a las 06:55