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には間にあります。このコードスニペットは公式ドキュメントからのものです。

<?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 に答える