如何在MySQL中使用搜索功能来搜索两个表格

3

你好,我有两个表,一个是parentlist(父列表),另一个是childlist(子列表)。

我需要通过parentname(父名称)和childname(子名称)对这两个表进行搜索。为了更好地理解,我提供了我的表结构,我需要在不同字段名的两个不同字段上应用搜索。

parentlist表中的字段名是name,而childlist表中的字段名是childname

如果我输入va,则希望查询结果中包含parentlist和childlist记录,例如以下示例。使用这个字符串va,我有一个parentnamevaru123和childnamevaru123,因此我希望在执行查询后得到这两条记录。

这是第一个表的名称和字段名。

parentlist

............................................................
 id      name      mobilenumber  user_jid        email
............................................................
 1      varu123     123456         abc21        abc@gmail.com

 2      abhishesk   123456         abc21        def@gmail.com

 3      harsh        1234          def22        123@gmail.com

这是第二个表的名称,其中包含字段名。

 childlist

..........................................
id user_id    childname     Shoolname  
...........................................
 1    1        ram            St.paul
 2    1        raj            St.xavier
 3    2        varu123        St.paul
 4    2        arun           St.xavier
 5    3        kapil          St.paul
 6    3        kamal          St.xavier

我想要这个输出: .
........................................................................................................
     id      name      mobilenumber  user_jid        email            childname        Shoolname
    ..........................................................................................................
     1      varu123     123456         abc21        abc@gmail.com       ram,raj         St.paul,St.xavier

     2      abhishesk   123456        abc21        def@gmail.com        varu123,arun    St.paul,St.xavier

你到目前为止尝试了什么?SO不是一个免费的编码服务。 - RiggsFolly
2个回答

1
select pl.*, GROUP_CONCAT(cl.childname), GROUP_CONCAT(cl.Shoolname)
from parentlist as pl
inner join childlist as cl on pl.id=cl.user_id
where pl.name like '%va%' or cl.childname like '%va%'

这个查询只会给我 abhishek 的记录,如果我输入 varu123,我想要 varu123 和 abhishek 两个记录。其中一个是父亲名字,另一个是孩子名字。 - varun joshi

0

使用MySQL的inner join或where语句:

select * from parentlist inner join 
childlist on parentlist.id=childlist.user_id 
where childname='varu123' or parentlist.name='varu123'

使用MySQL的inner join或类似的方法:

select * from parentlist inner join 
childlist on parentlist.id=childlist.user_id 
where childname like '%varu123%' or parentlist.name like '%varu123%'

这个查询有点对,但不是我想要的精确结果,它给了我 abhishek 123456 abc21 varu123 varu123 123456 abc21 raj varu123 123456 abc21 ram详见我的输出在这里,一个孩子的名字缺失了或者父亲是abhishek,在第二条记录中varu123出现了两次,我想要的是 abhishek 123456 abc21 varu123,arun varu123 123456 abc21 raj,ram - varun joshi
选择*,GROUP_CONCAT(childname),GROUP_CONCAT(Shoolname) from parentlist inner join childlist on parentlist.id=childlist.user_id where childname like '%varu123%' or parentlist.name like '%varu123%' group by user_id - Abhishek Sharma
尝试运行这个查询 @varunjoshi - Abhishek Sharma
嗨rahautos,这个查询没有给我abhishek的第二个孩子名字arun,它只给了我varu123,而我想要varu123,arun,否则查询是正确的。 - varun joshi
1
选择*,GROUP_CONCAT(childname),GROUP_CONCAT(Shoolname) from parentlist inner join childlist on parentlist.id=childlist.user_id where user_id in (select user_id from parentlist inner join childlist on parentlist.id=childlist.user_id where childname like '%varu123%' or parentlist.name like '%varu123%' group by user_id) group by user_id - Abhishek Sharma
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接