Hash join: Difference between revisions

Added SQL implementation
m (→‎{{header|TXR}}: Whitespace.)
(Added SQL implementation)
Line 834:
</pre>
 
=={{header|SQL}}==
Setting up the data is a bit verbose:
<lang sql>create table people (age decimal(3), name varchar(16));
insert into people (age, name) values (27, 'Jonah');
insert into people (age, name) values (18, 'Alan');
insert into people (age, name) values (28, 'Glory');
insert into people (age, name) values (18, 'Popeye');
insert into people (age, name) values (28, 'Alan');
 
create table nemesises (name varchar(16), nemesis varchar(16));
insert into nemesises (name, nemesis) values ('Jonah', 'Whales');
insert into nemesises (name, nemesis) values ('Jonah', 'Spiders');
insert into nemesises (name, nemesis) values ('Alan', 'Ghosts');
insert into nemesises (name, nemesis) values ('Alan', 'Zombies');
insert into nemesises (name, nemesis) values ('Glory', 'Buffy');</lang>
 
Doing the join is concise. But we don't actually have control over how the join is implemented...
<lang sql>select distinct
p.name,
n.nemesis
from
people p
join nemesises n on p.name=n.name
order by
p.name</lang>
 
{{out}}
<pre>NAME NEMESIS
---------------- ----------------
Alan Ghosts
Alan Zombies
Glory Buffy
Jonah Spiders
Jonah Whales</pre>
=={{header|Tcl}}==
Tcl uses hash tables to implement both its associative arrays and its dictionaries.
Anonymous user