如何使用 kohana 在 orm 中编写以下查询

发布于 2024-11-16 13:26:31 字数 193 浏览 2 评论 0原文

从 u_question uq 中选择 *,用户 u 其中 uq.asked_by=u.id 和 questions_by 在(从 fb_relations 中选择 u.id f,用户 u 其中 f.user1='515683059' 和 u.fb_uid=f.user2) 分组依据 询问者

select * from u_question uq,users u
where uq.asked_by=u.id and asked_by
in (select u.id from fb_relations
f,users u where f.user1='515683059'
and u.fb_uid=f.user2) group by
asked_by

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌吟 2024-11-23 13:26:31

这就像:

$subquery = DB::select('u.id')
    ->from(array('fb_relations','f'), array('users','u'))
    ->where('f.user1','=','515683059')
    ->where('u.fb_uid','=','f.user2');

$results = ORM::factory('user')
    ->select('uq.*')
    ->join(array('u_question','uq'))
    ->on('uq.asked_by','=','users.id')
    ->where('uq.asked_by','IN',$subquery)
    ->group_by('asked_by')
    ->find_all();

我不能保证这会起作用。请注意,ORM 模型总是从所属表(例如 table.*)中选择所有内容,添加“常用”from(),因此使用“严格”JOIN 而不是使用 from() 是更好的做法用于指定附加表。

关于子查询,您可以以这种方式构建它们,或者直接使用字符串 Database_Query 对象构建它们,而无需查询构建器(在这种情况下我不会使用它)。

您应该阅读文档

That'd be something like :

$subquery = DB::select('u.id')
    ->from(array('fb_relations','f'), array('users','u'))
    ->where('f.user1','=','515683059')
    ->where('u.fb_uid','=','f.user2');

$results = ORM::factory('user')
    ->select('uq.*')
    ->join(array('u_question','uq'))
    ->on('uq.asked_by','=','users.id')
    ->where('uq.asked_by','IN',$subquery)
    ->group_by('asked_by')
    ->find_all();

I can't guarantee this'll work. Notice that ORM models always select everything from the belonging table (e.g. table.*), adding a "usual" from() so it's a better practice to use "strict" JOINs instead of using from() for specifying the additional table.

And concerning subqueries, you can build them in this manner or directly with a string Database_Query object without the query builder (I wouldn't use it in this case).

You should read the docs

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文