Hash join: Difference between revisions

1,273 bytes added ,  6 years ago
(→‎{{header|Rust}}: Make more idiomatic)
Line 1,839:
[[28 Alan] [Alan Ghosts]]
[[28 Alan] [Alan Zombies]]</pre>
 
=={{header|Phix}}==
Phix dictionary keys must be unique, but storing/extending a sequence is no trouble, and in fact simplifies the scan phase.
<lang Phix>constant A = {{27,"Jonah"},
{18,"Alan"},
{28,"Glory"},
{18,"Popeye"},
{28,"Alan"}},
B = {{"Jonah","Whales"},
{"Jonah","Spiders"},
{"Alan", "Ghosts"},
{"Alan", "Zombies"},
{"Glory","Buffy"}},
jA = 2,
jB = 1,
MB = new_dict()
sequence C = {}
for i=1 to length(B) do
object key = B[i][jB]
object data = getd(key,MB)
if data=0 then
data = {B[i]}
else
data = append(data,B[i])
end if
putd(key,data,MB)
end for
for i=1 to length(A) do
object data = getd(A[i][jA],MB)
if sequence(data) then
for j=1 to length(data) do
C = append(C,{A[i],data[j]})
end for
end if
end for
destroy_dict(MB)
pp(C,{pp_Nest,1})</lang>
{{out}}
<pre>
{{{27, "Jonah"}, {"Jonah", "Whales"}},
{{27, "Jonah"}, {"Jonah", "Spiders"}},
{{18, "Alan"}, {"Alan", "Ghosts"}},
{{18, "Alan"}, {"Alan", "Zombies"}},
{{28, "Glory"}, {"Glory", "Buffy"}},
{{28, "Alan"}, {"Alan", "Ghosts"}},
{{28, "Alan"}, {"Alan", "Zombies"}}}
</pre>
 
=={{header|PHP}}==
7,796

edits