多个关系表中的mysql条件和顺序
我有这样的模式,我想知道是否有可能在新闻列表的列中有多个关系表中的mysql条件和顺序,mysql,entity-relationship,Mysql,Entity Relationship,我有这样的模式,我想知道是否有可能在新闻列表的列中有WHERE和orderby 例如,category.id=x,cartable.status=3,user.id=4 news ------------------------------------------------------- id* title category ------------------------------------------------------- id* title cartable
WHERE
和orderby
例如,category.id=x,cartable.status=3,user.id=4
news
-------------------------------------------------------
id* title
category
-------------------------------------------------------
id* title
cartable
-------------------------------------------------------
id user_id status*
news_category
-------------------------------------------------------
news_id category_id
news_cartable
-------------------------------------------------------
news_id cartable_id
user
-------------------------------------------------------
id* name
对不起,更新了。问题是:每一条新闻都有许多类别,也有许多可携带的。。每个cartable都有用户。那么,我怎样才能根据这些字段对条件进行排序呢
select * from news_category
left join news on (news_category.news_id = news.id)
left join category on (news_category.category_id = category.id)
--- cartable and user ???
是的,它看起来像所有的表都是相关的,所以这些值中的任何一个都可能被用在where子句或order by中。如果你有一个确切的期望输出,包括它和你尝试过的任何查询,有人可以帮助你。回答你的直接问题,是的,你可以。只要表之间有某种关系,就可以使用
WHERE
和orderby
对查询进行条件化
例如,如果您需要将用户
与新闻
(或一些彼此不直接相关的表)关联,则需要您声明链接用户
与新闻
(即:新闻
和可移动
)的关系链中的每个表,以及WHERE
或上的语句,以将这些语句相互链接(例如:WHERE-cartable\u id=cartable.id和user\u id=user.id
)。因此,如果您正在查询链接到特定新闻
条目的用户,您的代码可能如下所示:
SELECT user.id FROM user, cartable, news_cartable, news
WHERE news.id = news_id AND cartable_id = cartable.id AND user_id = user.id
AND news.id = {some news ID}
如果您想左键联接
表,则可以采用第二行中的条件,并将其作为ON
语句写入,如:
FROM news
LEFT JOIN news_cartable ON news.id = news_id
LEFT JOIN cartable ON cartable_id = cartable.id
LEFT JOIN user ON user_id = user.id
如果这也不是你想要的,说明你特别想做什么,我会看看我能做些什么
编辑:orderby
不是条件化的,可以与要选择的任何列一起使用。当然,需要注意的是,您必须先在查询中选择它。。。。我真的不明白为什么不。你的问题在哪里?你到底想做什么?您是否尝试过在这些列上使用WHERE
和orderby
?因为这似乎是解决你问题的最快方法。。。除非你真的有不同的问题,否则不要再检查这个问题。。。我错过了一些解释