Неверный идентификатор в запросе и подзапросе - PullRequest
0 голосов
/ 09 декабря 2018

Следующий запрос возвращает ошибку:

ORA-00904: "C"."CHARGEDATE": invalid identifier 
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error en la línea: 6, columna: 58

Запрос следующий:

Select
    c.idChargeStation,
    c.idVehicleUnit,
    round(cc.totalTiempo/cc.totalCargas, 2) AS media,
    v.versionNameVU, 
    c.chargeDate, 
    p.firstName, 
    p.lastName
FROM 
    Charge c, 
    VehicleUnit v, 
    Person p,
    (
        SELECT 
            idChargeStation, 
            idVehicleUnit, 
            chargeDate, 
            SUM(totalPluggedTime) AS totalTiempo, 
            count(*) AS totalCargas
        FROM Charge  
        WHERE 
            idChargeStation =  c.idChargeStation 
            AND idVehicleUnit = c.idVehicleUnit
            AND chargeDate = c.chargeDate
    ) cc
WHERE
    c.idVehicleUnit = v.idVehicleUnit
    AND v.idClient = p.idPerson
    HAVING media > 600
    HAVING round(c.powerKwH/c.KmFromLast, 2) > 1.00
Order by c.chargeDate DESC;

Есть 3 таблицы: Charge, VehicleUnit, Person:

  • idVehicleUnit является внешним ключом VehicleUnit (idVehicleUnit = idVehicleUnit)

  • idClient является внешним ключом Person (idClient = idPerson)

Я добавляю информацию, составляю таблицы, связанные с первыми 10 записями каждой таблицы.

Заряд таблицы: Table Charge

Таблица VehicleUnit: Table VehicleUnit

Таблица Person: Table Person

Запрос должен возвращатьПоля idChargeStation, idVehicleUnit, chargeDate таблицы начислений, среднее значение totalPluggedTime, поле versionNameVU таблицы vehicleUnit и поля firstName и lastName таблицы Person.

среднее значение получается из: SUM (totalPluggedTime)AS totalTime count (*) AS totalLoads <----- итоговая запись подзапроса, в которой указаны требования к idChargeStation, idVehicleUnit и chargeDateравны встречаются.С этими данными в основном раунде запросов (cc.totalTime / cc.totalLoads, 2) как среднее значение </p>

1 Ответ

0 голосов
/ 09 декабря 2018

Ну, у меня были некоторые плохие вещи в запросе, но я уже решил это, также большое спасибо, я поставил правильный запрос

    select c.idVehicleUnit, round(sum(c.totalPluggedTime)/count(*), 2) AS media, v.versionNameVU, p.firstName, p.lastName
    FROM charge c 
    inner join charge cc on c.idVehicleUnit = cc.idVehicleUnit  
    inner join vehicleUnit v on cc.idVehicleUnit = v.idVehicleUnit AND c.idVehicleUnit = cc.idVehicleUnit
    inner join person p on v.idClient = p.idPerson
    group by c.idVehicleUnit, v.versionNameVU, p.firstName, p.lastName, c.powerKwH, c.KmFromLast
    HAVING round(sum(c.totalPluggedTime)/count(*), 2) > (Select round(6*(sum(totalPluggedTime)/count(*)), 2) from charge)
    AND round(c.powerKwH/c.KmFromLast, 2) > 1.00 
    ORDER BY c.chargeDate DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...