通过内部联接仅从第3个表中获得1行

时间:2019-01-11 10:09:37

标签: php mysqli prepared-statement

所以我要获取3个表:

问题,答案和成员。

这很好,但是问题是,我只想获得每个问题的UnicodeDecodeError的第一行。因此,如果一个问题有50个答案,我只想显示其中一个的摘要。我已经看过子查询和左联接,但是它似乎不起作用。我该怎么办?

answers

1 个答案:

答案 0 :(得分:2)

如果您想保留投票最多的答案,则可以将另一个联接添加到子查询中,以找到每个问题的最受欢迎答案。然后,使用它将结果集过滤为每个问题仅一个答案。

SELECT 
    q.q_id,
    q.question,
    q.description,
    q.link,
    q.m_id AS qMID,
    q.timestamp,
    q.linktitle,
    q.answers,
    q.upvotes,
    a.a_id,
    a.q_id AS qQID,
    a.answer,
    m.m_id AS mMID,
    m.navn,
    m.avidaname
FROM questions q
INNER JOIN answers a
    ON a.q_id = q.q_id
INNER JOIN
(
    SELECT q_id, MAX(upvotes) AS max_upvotes
    FROM answers
    GROUP BY q_id
) a2
    ON a.q_id = a2.q_id AND a.upvotes = a2.max_upvotes
INNER JOIN members m
    ON q.m_id = m.m_id
WHERE
    public = '1'
ORDER BY
    q.timestamp DESC;
相关问题