表:
有帮助(重要的是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中没有效果,我怎么能实现呢?
答案 0 :(得分: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
老实说,我并不是百分之百确定你需要什么。也许你可以包括一些样本数据和你想要的那个样本数据的输出?
答案 1 :(得分:0)
希望这可以帮到你,试试这个:
SELECT * FROM帮助
INNER JOIN shared_helps ON helps.user_id = shared_helps.user_id WHERE helps.user_id = 1
ORDER BY shared_helps.fecha ASC | DESC