Ich versuche, 2 Aliase zu subtrahieren, um einen anderen Alias zu erstellen, bekomme aber einen Fehler "unbekannte Spalte".Erstellen eines Alias mit mathematischen Ergebnissen von 2 anderen Aliasen
Hier ist meine SQL:
select o.id, o.name,
(select sum(l.source_expense)
from `assignments` as a
left join `leads` as l on (l.id = a.lead_id)
where a.{$this->sql_column}=o.id
and l.date_created between {$this->date_from} and {$this->date_to}
and find_in_set(l.vertical_id, '".implode(',', $this->app_user->verticals)."')
) as `expense`,
(select sum(a.buyer_revenue)
from `assignments` as a
left join `leads` as l on (l.id = a.lead_id)
where a.refunded=0
and a.{$this->sql_column}=o.id
and l.date_created between {$this->date_from} and {$this->date_to}
and find_in_set(l.vertical_id, '".implode(',', $this->app_user->verticals)."')
) as `revenue`,
`revenue` - `expense` as `profit`
from {$this->sql_table} as o
Grundsätzlich möchte ich eine profit
alias erstellen, indem revenue
von expense
subtrahiert wird. Der Grund ist, dass ich Datatables verwende und die Spalte sortierbar sein soll. Ich weiß schon, dass ich das mit PHP leicht machen kann.
Wie kann ich das erreichen?
Bearbeiten - Ich habe versucht, die Antworten unten und bekomme eine "Jede abgeleitete Tabelle sollte Alias haben" -Fehler von PHPStorm, und einen Syntaxfehler beim Versuch, die Abfrage auszuführen.
Heres die neue Abfrage:
select t.id, t.name, t.expense, t.revenue, t.revenue - t.expense as profit
from(select o.id, o.name,
(select sum(l.source_expense)
from `assignments` as a
left join `leads` as l on (l.id = a.lead_id)
where a.{$this->sql_column}=o.id
and l.date_created between {$this->date_from} and {$this->date_to}
and find_in_set(l.vertical_id, '".implode(',', $this->app_user->verticals)."')
) as `expense`,
(select sum(a.buyer_revenue)
from `assignments` as a
left join `leads` as l on (l.id = a.lead_id)
where a.refunded=0
and a.{$this->sql_column}=o.id
and l.date_created between {$this->date_from} and {$this->date_to}
and find_in_set(l.vertical_id, '".implode(',', $this->app_user->verticals)."')
) as `revenue`
from {$this->sql_table} as o
) as t
Das gleiche wie andere Antwort, Fehler erhalten - "jede abgeleitete Tabelle sollte Alias haben" – kjdion84
@ kjdion84 Veröffentlichen Sie Ihre vollständige Abfrage, ich werde Ihnen sagen, was Sie falsch gemacht haben. – sagi
@ kjdion84 Sie wählen 'O. 'in der äußeren Abfrage anstelle von' T.Column> ', (ID und Name), beheben Sie das und versuchen Sie es erneut –
sagi