Probeer dit om alleen de eerste 8 tekens te vergelijken:
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;
De cast trimt impliciet slepende karakters. ddid
heeft slechts 8 tekens om mee te beginnen. Het is ook niet nodig om het te verwerken. Dit bereikt hetzelfde:
JOIN dyndomrun d ON left(r.domainid, 8) = d.ddid
Houd er echter rekening mee dat de tekenreeksfunctie left()
werd pas geïntroduceerd met PostgreSQL 9.1. In eerdere versies kunt u vervangen door:
JOIN dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
__
Basisverklaring voor beginners:
-
De query gebruikt een
JOIN
. Lees meer daarover in de handleiding . -
FROM domainregion r
is een afkorting voorFROM domainregion AS r
.AS
is gewoon ruis in dit geval in PostgreSQL. De tabelalias maakt de query korter en gemakkelijker te lezen, maar heeft hier geen andere impact. U kunt ook tabelaliassen gebruiken om dezelfde tabel bijvoorbeeld meerdere keren op te nemen. -
De join-voorwaarde
ON r.domainid::varchar(8) = d.ddid
voegt alleen die rijen samen waar de twee uitdrukkingen exact overeenkomen. Lees nogmaals over die basisprincipes in de handleiding (of een andere bron).
Het is een simpele vraag, hier valt niet veel uit te leggen.