2

我有以下表结构:

 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 个查询或进行多个查询以获取用户问题,然后问题得到答案。

4

1 回答 1

0

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

于 2012-07-16T14:05:13.437 回答