Prova questo per confrontare solo i primi 8 caratteri:
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;
Il cast taglia implicitamente i personaggi finali. ddid
ha solo 8 caratteri per cominciare. Non c'è bisogno di elaborarlo, anche. Questo ottiene lo stesso:
JOIN dyndomrun d ON left(r.domainid, 8) = d.ddid
Tuttavia, tieni presente che la funzione stringa left()
è stato introdotto solo con PostgreSQL 9.1. Nelle versioni precedenti puoi sostituire:
JOIN dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
__
Spiegazione di base per principianti:
-
La query utilizza un
JOIN
. Leggi ulteriori informazioni nel manuale . -
FROM domainregion r
è l'abbreviazione diFROM domainregion AS r
.AS
è solo rumore in questo caso in PostgreSQL. L'alias tabella rende la query più breve e più facile da leggere ma non ha altro impatto qui. Ad esempio, puoi anche utilizzare gli alias di tabella per includere la stessa tabella più volte. -
La condizione di unione
ON r.domainid::varchar(8) = d.ddid
unisce solo le righe in cui le due espressioni corrispondono esattamente. Ancora una volta, leggi quelle nozioni di base nel manuale (o qualsiasi altra fonte).
È una domanda semplice, non c'è molto da spiegare qui.