Requete multitables avec relation pas dans le schéma
voila j'ai besoin de comparé une donnée dans une table qui varie tout les mois (la taille d'une boite mail).
mon schéma:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
email:
columns:
datestate: date
asset_id: integer
specialaccount: string(50)
total: integer
billable_euro: float(2)
billable_act: float(2)
snapshot_annual_act: float(2)
billable_adj: float(2)
snapshot_annual_adj: float(2)
indexes:
unique:
fields: [datestate, asset_id]
type: unique
relations:
Asset:
local: asset_id
foreign: id
foreignAlias: monthlydiskspaceln |
le but est de savoir chaque mois qui a le plus fait un travail de réduction de sa boite.
la requete SQL donne:
Code:
1 2 3 4 5 6
|
SELECT e.asset_id, e.total,f.total,e.total-f.total
FROM email e
LEFT JOIN email f ON e.asset_id=f.asset_id AND f.datestate="2010-11-01"
WHERE e.datestate="2010-12-01"
ORDER BY e.total-f.total; |
ce que j'ai transcrit en DSL:
Code:
1 2 3 4 5 6 7
|
$q = $this->createQuery()
->select('e.id, e.asset_id,e.total,f.total')
->from('email e')
->leftJoin('email f ON e.asset_id = f.asset_id AND f.datestate="'.$prevdate.'"')
->where('e.datestate= ? ',$date)
->orderBy('(e.total-f.total)'); |
sauf que ça me donne comme requete (via echo $q->getSqlQuery();)
Code:
1 2
|
SELECT e.id AS e__id, e.asset_id AS e__asset_id, e.total AS e__total, e2.id AS e2__id, e2.total AS e2__total FROM email e, email e2 WHERE (e.datestate = ?) ORDER BY (e.total-e2.total) |
et au $q->execute() le message d'erreur:
Code:
1 2
|
"email" with an alias of "f" in your query does not reference the parent component it is related to. |
je ne voie pas trop comme me dépatouiller de ça :cry: