
03/09/2009, 02:40
|
 | | | Fecha de Ingreso: septiembre-2009 Ubicación: Noruega
Mensajes: 10
Antigüedad: 15 años, 5 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 |