Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何代表第二个表中的同一id选择多行?_Mysql_Node.js_Join - Fatal编程技术网

Mysql 如何代表第二个表中的同一id选择多行?

Mysql 如何代表第二个表中的同一id选择多行?,mysql,node.js,join,Mysql,Node.js,Join,我有一个名为“profile”的表,如下所示 profile_id name state location 1 Alex Houston Park Lane result : { profile_id : 1, name : alex, state : Houston, location : Park Lane, tag_title : finance, tags : finance,accounting,audi

我有一个名为“profile”的表,如下所示

profile_id     name     state      location

    1          Alex     Houston    Park Lane
result : {
 profile_id : 1,
 name : alex,
 state : Houston,
 location : Park Lane,
 tag_title : finance,
 tags : finance,accounting,auditing,finance,accounting,auditing
}
第二个表名为“tags”,如下所示

tag_id     profile_id     tag_title
  1           1            finance
  2           1           accounting
  3           1            audit
tier_d     profile _id    min_price     max_price    fee
  1           1              400         500          5
  2           1              750         1200        12
  3           2              900         1500         15
第三个表名为“trust\u admin\u aum”,如下所示

tag_id     profile_id     tag_title
  1           1            finance
  2           1           accounting
  3           1            audit
tier_d     profile _id    min_price     max_price    fee
  1           1              400         500          5
  2           1              750         1200        12
  3           2              900         1500         15
同一配置文件可能有多个层

我的场景是,用户输入标签、状态和最低价格进行搜索,我必须在以下条件下进行搜索

  • 如果用户输入的标签配置文件是否为db,则标签应首先匹配
  • 然后匹配状态,无论用户输入的状态是否与具有该标记的任何配置文件匹配

  • 如果以上两个条件均为真,则检查是否存在基本上具有的配置文件,选择所有与用户匹配的标记,然后再次将用户加入到标记中 以获取具有指定标记的所有用户以及这些用户的所有标记的列表

    在下面的查询中,别名是id的匹配标记列表。别名b是匹配用户的列表。 最后,别名c是用户b的所有标记的列表


    您可以使用
    GROUP\u CONCAT
    获取逗号分隔数组中的所有标记,然后可以将其拆分为对象中的数组

    SELECT p.*, IFNULL(GROUP_CONCAT(t1.tag_title), '') AS tags
    FROM basicprofile AS p
    JOIN profile_tags AS t1 ON p.profile_id = t1.profile_id
    JOIN profile_tags AS t2 ON t1.profile_id = t2.profile_id
    WHERE t2.tag_title LIKE '%finance%'
    GROUP BY p.profile_id
    
    创建对象时,可以执行以下操作来创建标记数组:

    obj.tag_title = row.tags == "" : [] ? row.tags.split(",");
    

    一个对象中不能有多个
    tag\u title:
    属性,属性名称必须是不同的。因此,请告诉我如何使用与用户输入标记匹配的所有标记检索配置文件?它应该是一个数组:
    tag\u title:[“财务”、“会计”、“审计”]
    那么我怎样才能这样检索呢?为什么说表的名称是
    profile
    tags
    ,但是在查询中使用
    basicprofile
    profile\u tags
    ?您希望每个profile都有一行吗,只有一列显示所有标签?@Sloarthasher看看他在问题中发布的所需对象。@Barmar:Aah!这是整个阅读的事情。。。LOL应该已经看到了。所以不是免费的编码服务。如果你是一名程序员,你应该能够从中推断出你需要什么。如果你不是程序员,你应该雇一个。我提到了我自己尝试过的查询,但我没有得到我需要的结果。那个这就是我在这里发帖的原因。如果你不想帮忙,那么没问题。在问题中发布你的查询。使用
    GROUP\u CONCAT(DISTINCT t1.tag\u title)
    去除重复的标记。
    obj.tag_title = row.tags == "" : [] ? row.tags.split(",");