0

我正在开发一些代码,需要执行这个查询

(传统的MYSQL)

SELECT * FROM `SistemaPuntuacions` WHERE `rankingActual` BETWEEN (SELECT `rankingActual` FROM `SistemaPuntuacions` WHERE `user_id` = $id) -5 AND (SELECT `rankingActual` FROM `SistemaPuntuacions` WHERE `user_id` = $id) +5 ORDER BY `rankingActual`"

基本上,我在 SistemaPuntuacions 中有一个用户列表,以及他们的排名(rankingActual)。我需要显示该用户排名上方的 5 个用户和下方的 5 个用户。

但是教义语言中没有“BETWEEN”,所以我被困在那里。

我能得到一些帮助吗?

谢谢你。

4

2 回答 2

1

好吧,实际上在 DQL 中有一个BETWEEN。此代码片段来自官方文档。

<?php
$query = $em->createQuery('SELECT u.name FROM CmsUser u WHERE u.id BETWEEN ?1 AND ?2');
$query->setParameter(1, 123);
$query->setParameter(2, 321);
$usernames = $query->getResult();
于 2013-02-05T12:17:36.867 回答
0

您可以像这样使用本机 SQL:

$sql = 'SELECT * FROM `SistemaPuntuacions` WHERE `rankingActual` BETWEEN (SELECT `rankingActual` FROM `SistemaPuntuacions` WHERE `user_id` = $id) -5 AND (SELECT `rankingActual` FROM `SistemaPuntuacions` WHERE `user_id` = $id) +5 ORDER BY `rankingActual`';
$rows = $this->container->get('database_connection')->query($sql);
于 2013-02-05T11:32:22.773 回答