Prueba esto para comparar solo los primeros 8 caracteres:
SELECT r.domainid, r.dombegin, r.domend, d.ddid
FROM domainregion r
JOIN dyndomrun d ON r.domainid::varchar(8) = d.ddid
ORDER BY r.domainid, d.ddid, r.dombegin, r.domend;
El elenco recorta implícitamente los caracteres finales. ddid
solo tiene 8 caracteres para empezar. No es necesario procesarlo también. Esto logra lo mismo:
JOIN dyndomrun d ON left(r.domainid, 8) = d.ddid
Sin embargo, tenga en cuenta que la función de cadena left()
solo se introdujo con PostgreSQL 9.1. En versiones anteriores puede sustituir:
JOIN dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
__
Explicación básica para principiantes:
-
La consulta utiliza un
JOIN
. Lea más sobre eso en el manual . -
FROM domainregion r
es la abreviatura deFROM domainregion AS r
.AS
es solo ruido en este caso en PostgreSQL. El alias de tabla hace que la consulta sea más corta y fácil de leer, pero no tiene ningún otro impacto aquí. También puede usar alias de tabla para incluir la misma tabla varias veces, por ejemplo. -
La condición de combinación
ON r.domainid::varchar(8) = d.ddid
une solo aquellas filas donde las dos expresiones coinciden exactamente. Nuevamente, lea sobre esos conceptos básicos en el manual (o cualquier otra fuente).
Es una consulta simple, no hay mucho que explicar aquí.