Erlang 为mnesia查询编写查询列表理解

Erlang 为mnesia查询编写查询列表理解,erlang,list-comprehension,mnesia,Erlang,List Comprehension,Mnesia,我正在尝试用erlang+mnesia构建一个小型测试应用程序 我有一个从#user记录生成的用户表,定义如下: -record(user_details, {name, password}). -record(user, {id, details}). 然后我插入一个具有该功能的用户: add_sample_data() -> Mat = #user{ details = #user_details{ name = "mat", password = "ma

我正在尝试用erlang+mnesia构建一个小型测试应用程序

我有一个从#user记录生成的用户表,定义如下:

-record(user_details, {name, password}).
-record(user, {id, details}).
然后我插入一个具有该功能的用户:

add_sample_data() ->
    Mat = #user{
      details = #user_details{
    name = "mat", password = "mat"
       }
     }, 
    user:insert_user(Mat),

查询
[U#user.details | | U我认为QLC代码无法编译的最常见原因是,如果您遗漏了包含QLC查询的模块中需要包含的头文件。请尝试将以下内容添加到您的模块中,看看它是否解决了问题:

-include_lib("stdlib/include/qlc.hrl").
在问题行:

U#user.details.name == "mat"
您正在尝试访问
用户\u详细信息
记录,但未对其命名。请尝试

(U#user.details)#user_details.name == "mat"

根据我的经验,编译器不会自行判断#user.details是一个#user#details。

如果在编译时失败,请将错误和警告列表粘贴到此处。这将使诊断更容易:)失败编译的一个例子可能是我看不清楚,但您使用的是
mnesia:transaction(乐趣)关于…end
而不是
case mnesia:transaction(Fun)of…end
。可能是这样吗?我只是添加了很多东西(修复),我添加了一个指示来告诉哪一行失败了,没有它(如第一个示例),编译和工作都很好。但是它返回表的所有记录(显然没有约束)在哪里编写和运行这些查询?包括qlc.hrl。qlc代码适用于某些(复制、粘贴和改编)查询,但我不明白如何编写我心目中的查询。就是这样!我尝试了>许多<有或没有#用户#详细信息的备选方案,但我没有找到正确的,谢谢!
U#user.details.name == "mat"
(U#user.details)#user_details.name == "mat"