【问题标题】:SQL Query Logic 2SQL查询逻辑2
【发布时间】:2014-11-25 10:24:47
【问题描述】:

我已经在这里问过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

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

现在,我所做的是我从数据库中操作结果集,但这有分页,并且被告知如果我查询所有数据然后再操作,它将影响系统性能。

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

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

期待您的来信。

【问题讨论】:

  • 请向我们展示您目前的 sql 语句
  • 这里是:select user_1.name, group_concat(user_2.name SEPARATOR ", ") aspaired_names from pairing_table left join users as user_1 on pairing_table.main_id = users.id left join users as user_2 on pairing_table.paid_id = users.id group_by pairing_table.main_id 但我如何添加查询以从这两个列中获取名称?因为 sql 无法识别 where 中的别名

标签: php sql codeigniter


【解决方案1】:

检查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; 

【讨论】:

  • 嗨,这是我建立的查询:这里是:select user_1.name, group_concat(user_2.name SEPARATOR ", ") aspaired_names from pairing_table left join users as user_1 on pairing_table.main_id = users.id 在 pairing_table.paid_id = users.id group_by 上以 user_2 的身份加入用户,pairing_table.main_id 但是如何添加查询以从这两个列中获取名称?因为 sql 无法识别别名?
  • @derping 您可以通过 php 获取名称 hash map
  • @derping 进一步你可以在这里看到PHP:Hash Maps
  • 是的,我为解决这个问题所做的是通过 php 操作结果数组,通过查询并使用 strpos 并在字符存在时推送值。有没有我可以在查询本身中做到这一点?
猜你喜欢
  • 1970-01-01
  • 2015-12-09
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 2013-04-19
  • 2020-03-10
相关资源
最近更新 更多