SELECT
table_comments1.*, table_comments2.*
FROM
[table_comments1], [table_comments2]
INNER JOIN
[users] ON [table_comments1].fk_user_id = [users].user_id
AND [table_comments2].fk_user_id = [users].user_id
ORDER BY
comment_date DESC
我做错了什么?我收到了这个错误:
无法绑定多部分标识符“table_comments1.fk_user_id”。
我想最终按日期时间排序来自两个表的所有评论,但是遇到了这个问题。
答案 0 :(得分:2)
试试这个
select t1.*, t2.*
from [table_comments1] t1 inner join users u
on t1.fk_user_id = u.user_id
inner join [table_comments2] t2
on t2.fk_user_id = u.user_id
答案 1 :(得分:-1)
仅供参考join
有几种类型。t1 inner join t2 on t1.id = t2.fkId
inner
(如果ANSI 89
或其他任何其他内容被忽略,则为默认值)从t1和t2返回记录,其中t1和t2中存在匹配记录。旧样式(...from t1,t2 where t1.id = t2.fkId
)如下所示:t1 left join t2 on t1.id = t2.fkId
null
来自t1的所有记录(包括不匹配)和来自t2的匹配的记录存在。来自t2的不匹配记录显示为... from t1,t2 where t1.id *= t2.fkId
。旧式:t1 right join t2 on t1.id = t2.fkId
。
left join
与null
类似的逻辑,但所有来自t2和来自t1和...from t1,t2 where t1.id =* t2fkId
的匹配记录用于非匹配的t1。旧式:t1 full join t2 on t1.id = t2.fkId
。
null
左+右。从t1开始的一切 和t2,from t1,t2 where t1.id *=* t2.fkId
用于非匹配。旧式:*=*
。 我错了。至少在兼容级别上,ms sql 2008不支持80t1 cross join t2
。我没有旧版本来检查。
on
(无Cartesian Product
条件)返回两个表中的... from t1,t2
。对于来自t1的每条记录来自t2的所有记录。旧式是new
请注意,最近在1992年引入了“新风格”,MS SQL Server 2012停止支持“旧风格”。
答案 2 :(得分:-2)
不确定。但也许你正在寻找类似的东西:
select table_comments1.*,
table_comments2.*
from users as u
inner join table_comments1 as c1
on u.user_id = c1.fk_user_id
inner join table_comments2 as c2
on u.user_id = c2.fk_user_id
order by isnull(c1.comment_date, c2.comment_date) desc