还没有找到一个可靠的解决方案,但我有一个 mySQL 查询,我想将其转换为 Doctrine。它是从带有连接的子查询中进行选择,我可能在某处读到 Doctrine 的子查询中不允许连接。
这是 SQL:
SELECT part, SUM(qty) as qty FROM (SELECT part, SUM(qty) as qty FROM sub LEFT JOIN main ON main.id = main_id WHERE hold != 1 GROUP BY name, part) AS tbl GROUP BY part
这就是我尝试过的,但都是错误的。
$em = $this->getDoctrine()->getManager();
$q = $em->createQuery('v');
$q2 = $em->createSubQuery()
->select('m.part, sum(s.qty) qty')
->from('Sub s')
->leftJoin('s.main m')
->where('s.hold != 1')
->groupBy('m.part');
$q->select('m.part, sum(qty)', $q2->getDQL());
Run Code Online (Sandbox Code Playgroud)
我遇到的第一个错误是:
FatalErrorException: Error: Call to undefined method Doctrine\ORM\EntityManager::createSubQuery() in ....Controller.php line 238
我很确定我做错的不仅仅是这一点,而且这是即将发生的第一件事。那么getManager()显然没有 …
我正在尝试编写一个程序,提示用户输入酒店的楼层总数,每层楼的房间数量以及占用房间的数量.最后,它应显示房间总数,占用房间总数以及占用房间的百分比.我在显示占用房间的百分比方面遇到了问题.我正在使用所有的int数字.
这是我提出的等式:
roomsOccPercentage = (totalRoomsOccupied * 100) / totalRooms ;
Run Code Online (Sandbox Code Playgroud)
当我将程序提交给我教授的Java运行程序时,它会显示:
65 % of the Rooms are occupied.
Run Code Online (Sandbox Code Playgroud)
但是我教授提供的那个输出了66%的答案,所以程序不接受我的文件.
有谁知道我做错了什么?它是DecimalFormat错误吗?
编辑:这是整个代码
import java.util.Scanner;
import java.text.DecimalFormat;
public class hw7_1 {
public static void main(String[]args) {
Scanner keyboard = new Scanner(System.in);
DecimalFormat formatter = new DecimalFormat("#0");
int totalFloors;
int totalRooms = 0;
int numFloors;
int numRooms;
int roomsOccupied;
int totalRoomsOccupied = 0;
int roomsOccPercentage = 0;
//prompting users to input # of floors, no inputs below 1 floor
do {
System.out.println("Please enter …Run Code Online (Sandbox Code Playgroud)