2 Stimmen

Erlang: Verknüpfung zweier Tabellen ohne Gleichheitsmuster

Gibt es eine Möglichkeit zur Implementierung

SELECT *
FROM pattern p
  JOIN tag t ON t.tag LIKE CONCAT(p.pattern, '%') AND t.type = p.type

in Form von erlang qlc auf zwei ets:

  1. [{{Muster, Typ}, Id}]
  2. [{{Tag, Typ}, Id}]

?

D. h. Ungleichheitsmuster, d. h. Tag beginnt mit Muster und Typ = Typ.

Vielen Dank im Voraus.

2voto

Ziemlich einfach:

1> ets:new(a,[named_table]),[ets:insert(a,X) || X<-[{{"foo", bar},12},{{"baz", quux},11}]].
[true,true]
2> ets:new(b,[named_table]),[ets:insert(b,X) || X<-[{{"foobar", bar},12},{{"bazquux", quux},11},{{"fooxxx", bar},1},{{"bazbaz", baz},11}]].
[true,true,true,true]
3> qlc:e(qlc:q([{Pattern, Type1, Tag, Id1, Id2} || {{Pattern, Type1}, Id1} <- ets:table(a), {{Tag, Type2}, Id2} <- ets:table(b), Type1 =:= Type2, lists:prefix(Pattern, Tag)])).
[{"baz",quux,"bazquux",11,11},
 {"foo",bar,"foobar",12,12},
 {"foo",bar,"fooxxx",12,1}]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X