多个关系表中的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
?因为这似乎是解决你问题的最快方法。。。除非你真的有不同的问题,否则不要再检查这个问题。。。我错过了一些解释