Sql 两个表之间的联接产生一个结果?

Sql 两个表之间的联接产生一个结果?,sql,firebird2.5,Sql,Firebird2.5,在主标题中解释有点复杂,但情况如下: -我有两张桌子: 用户,偏好 定义如下 用户: ID | NAME | FK_NODE_PREFERENCES 首选项: ID | FK_USERS | PREFERENCE_DESCRIPTION 其想法是为每个用户提供许多首选项 结果应如下所示: USER | ALL_PREFERENCES 我需要按偏好字符串的一部分进行搜索,并且我只需要在结果选择查询中有一行,该查询将所有与用户相关的偏好作为文本保存到单个记录中 我不熟悉Firebird,但它

在主标题中解释有点复杂,但情况如下: -我有两张桌子: 用户,偏好

定义如下

用户:

ID | NAME | FK_NODE_PREFERENCES
首选项:

ID | FK_USERS | PREFERENCE_DESCRIPTION
其想法是为每个用户提供许多首选项

结果应如下所示:

USER | ALL_PREFERENCES
  • 我需要按偏好字符串的一部分进行搜索,并且我只需要在结果选择查询中有一行,该查询将所有与用户相关的偏好作为文本保存到单个记录中

我不熟悉Firebird,但它似乎有一个LIST()函数,应该与MySQL中的GROUP_CONCAT()函数等效。()

因此,基本上查询应该如下所示:

SELECT Users.name, LIST(Preferences.preference_description, ' ') AS ALL_PREFERENCES FROM Users JOIN NodePreferences ON Users.fk_node_preferences = Preferences.id WHERE Preferences.preference_description LIKE '%abc%' GROUP BY Users.name
所以。。。不确定这是否有效,但方向应该是正确的。。。
希望有帮助

我不熟悉Firebird,但它似乎有一个LIST()函数,应该与MySQL中的GROUP_CONCAT()函数等效。()

因此,基本上查询应该如下所示:

SELECT Users.name, LIST(Preferences.preference_description, ' ') AS ALL_PREFERENCES FROM Users JOIN NodePreferences ON Users.fk_node_preferences = Preferences.id WHERE Preferences.preference_description LIKE '%abc%' GROUP BY Users.name
所以。。。不确定这是否有效,但方向应该是正确的。。。
希望有帮助

您是希望按提供的首选项片段筛选所有行,还是希望所有行作为一行返回?为什么在用户表和节点引用之间有交叉FK?在用户FK_节点_首选项和节点引用FK_用户中?如果您需要使用无限到无限,您可以使用交叉引用表。由于NodePreferences与Preferences表一起工作,我不知道如何解释它——通常应该是这样的:如果用户选择了“红色”、“蓝色”、“白色”——它们都将保留在结果记录中,所有Preferences都将以空格分隔为一个字符串。@Leandro-你实际上是对的。非常感谢您的留言:)。我现在正在修改你的笔记,但主要问题仍然存在:|修改了主要问题,我希望这个问题能够得到解决:|您是希望按照提供的首选项片段过滤所有行,还是希望所有行作为一行返回?为什么在用户表和节点引用之间有交叉FK?在用户FK_节点_首选项和节点引用FK_用户中?如果您需要使用无限到无限,您可以使用交叉引用表。由于NodePreferences与Preferences表一起工作,我不知道如何解释它——通常应该是这样的:如果用户选择了“红色”、“蓝色”、“白色”——它们都将保留在结果记录中,所有Preferences都将以空格分隔为一个字符串。@Leandro-你实际上是对的。非常感谢您的留言:)。我现在正在修改你的笔记,但主要问题仍然存在:|修改了主要问题,我希望这个问题能够得到解决:|不知何故我无法激活查询:|你能给我们你尝试过的查询和firebird给你的错误消息吗…?不知何故我无法激活查询:|你能给我们你尝试过的查询和firebird给你的错误消息吗。。。?