SQL查询逻辑2

时间:2014-11-25 10:24:48

标签: php sql codeigniter

我已经在这里问Query Logic SQL并且没有得到回复(可能是我的数据的呈现)我真的希望有人可以看看这个并提供他们如何获得的输入这样做了。非常感谢任何帮助。

我有一个类似于

的sql表数据

用户表

id | name     |
_______________
 1 | John     |
 2 | Mary     |
 3 | Charles  |
 4 | Mike     |
 5 | Lucy     |
 6 | Debbie   |

配对表:

main_id | pair_id   | 
_____________________
  1     |   2       |      
  1     |   3       |   
  2     |   4       |   
  2     |   5       |   
  3     |   6       |     
  3     |   1       |   

将输出呈现给用户时,我的html表看起来像这样,在sql中使用group_by groupconcat。

main_name | paired_names
  John    |   Mary, Charles
  Mary    |   Mike, Lucy
  Charles |   Debbie, John

现在,问题出在搜索(通配符搜索)

期间

说用户将输入" Charles" ...

输出必须是:

main_name | paired_names
  John    |   Mary, Charles
  Charles |   Debbie, John

因为它将在配对表的两列中进行通配符搜索。

现在,我所做的是操纵数据库中的结果集,但是这已经分页,并且如果我查询所有数据然后进行操作,则会建议它会影响系统性能。

我希望有人能够就如何完成这项工作提供建议。

如果需要,我可以提供更多详细信息。

期待收到你的来信。

1 个答案:

答案 0 :(得分:0)

检查fiddle

SELECT users.id,GROUP_CONCAT(pair_id) FROM (SELECT users.id,
 users.name,pairing.main_id,pairing.pair_id 
    FROM users, pairing 
 WHERE pairing.main_id=users.id

 ) AS t1 JOIN users ON users.id=t1.id GROUP BY  users.id;