Hash join: Difference between revisions

Added Prolog
(Changed the whole SQL solution to illustrate better practices. Original solution was missing the key ingredient, the optimizer hint.)
(Added Prolog)
Line 2,374:
28 : Alan : Ghosts
28 : Alan : Zombies</pre>
 
=={{header|Prolog}}==
<lang Prolog>% Name/Age
person_age('Jonah', 27).
person_age('Alan', 18).
person_age('Glory', 28).
person_age('Popeye', 18).
person_age('Alan', 28).
 
% Character/Nemesis
character_nemisis('Jonah', 'Whales').
character_nemisis('Jonah', 'Spiders').
character_nemisis('Alan', 'Ghosts').
character_nemisis('Alan', 'Zombies').
character_nemisis('Glory', 'Buffy').
 
join_and_print :-
format('Age\tName\tCharacter\tNemisis\n\n'),
forall(
(person_age(Person, Age), character_nemisis(Person, Nemesis)),
format('~w\t~w\t~w\t\t~w\n', [Age, Person, Person, Nemesis])
).</lang>
{{out}}
<pre>
?- join_and_print.
Age Name Character Nemisis
 
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
true.
</pre>
 
=={{header|PureBasic}}==
Anonymous user