查询以获取具有或不具有group_concat的多行

时间:2012-07-16 13:07:29

标签: php mysql sql query-performance

我有以下表结构:

 users:
    id PK
    username
    email
    salt
    password
    date_created

questions:
    id PK
    user_id FK(users)
    title
    date_created
    date_updated

answers:
    id PK
    question_id FK(questions)
    user_id FK(users)
    body
    date_created

所以我需要一个从这些表中获取数据的查询,并显示用户的最后5个问题,并为每个问题显示前3个答案。像这样:

"What is my favorite color? posted by user

red - posted by user1
green - posted by user2
yellow - posted by user3

.....
"

所以这是我的目标。我如何在1个查询中执行此操作?我应该使用group concat对1个问题的多个答案进行分组吗?或者我应该得到结果并在PHP中解析数组以通过question_id对答案进行分组。此外,我需要这个查询非常快。我不确定是否会更快地进行1次查询或进行多次查询以解决用户的问题,之后问题就会回答。

1 个答案:

答案 0 :(得分:0)

我认为我提供的关键“提示”是你可以在GROUP_CONCAT()的中使用常规的CONCAT();然后使用JOIN以及注释中提到的一些技术来获得这两个函数需要的中间结果集来获取输出。