0

表:

帮助(重要的是 id 和 fecha 字段)

在此处输入图像描述

共享帮助(其他用户在不同日期引用的帮助)

在此处输入图像描述

所以,

来自用户的所有帮助 (user_id = 1)

SELECT * FROM helps WHERE id_user = 1

来自用户和他所引用的人的所有帮助

SELECT * FROM helps where id_user = 1 or id IN (SELECT helpid FROM shared_helps WHERE userid = 1)

我知道你们会发现这是一个非常丑陋的查询(我希望你们能给我亮光),但它似乎显示了我想要的结果。问题是这种方式 shared_helps.fecha 被忽略了,所以它在 ORDER BY 中不起作用,我怎样才能做到这一点?

4

2 回答 2

2
SELECT
  helps.*
FROM
  helps
LEFT JOIN
  shared_helps
    ON  shared_helps.helpid = helps.id
    AND shared_helps.userid = 1
WHERE
     helps.id_user = 1
  OR shared_helps.userid = 1
ORDER BY
  CASE WHEN helps.id_user = 1 THEN 0 ELSE 1 END,
  shared_helps.fecha

编辑

根据您的评论,试试这个...

ORDER BY
  COALESCE(shared_helps.fecha, helps.fecha)

或者可能这个...

ORDER BY
  helps.fecha

老实说,我不是 100% 确定你需要什么。也许您可以包含一些样本数据和您希望该样本数据的输出?

于 2012-10-09T12:28:21.250 回答
0

希望这可以帮助你,试试这个方法:

SELECT * FROM
help INNER JOIN shared_helps ON help.user_id = shared_helps.user_id WHERE help.user_id = 1
ORDER BY shared_helps.fecha ASC|DESC

于 2012-10-09T12:27:51.703 回答