3

MYSQL の残りの 2 つのエイリアスから 3 つ目のエイリアスを作成することはできますか?

これが私のクエリです:

SELECT DISTINCT
workcards.task, 
workcards.program, 
workcards.zone, 
workcards.CYLcomp, 
workcards.CYLint, 
workcards.task, 
workcards.CYLcomp + workcards.CYLint AS nextdue,
workcards.wcnumber,
(SELECT airtimes.total_cycles
       FROM airtimes 
       WHERE airtimes.nnumber='xxxxx'
       ORDER BY airtimes.total_cycles DESC LIMIT 1) AS current_cycle
FROM workcards
WHERE basis LIKE '%CYL%'
AND nnumber='xxxxx'
ORDER BY CASE nextdue
WHEN 0 THEN 1 ELSE -1 END ASC, nextdue ASC

私がやりたいことは、'nextdue' から 'current_cyle' エイリアスを引いた差になる 3 番目のエイリアスを作成することですか? 何かのようなもの:

nextdue - current_cycle AS remainder?

noobか何かならごめんなさい。

ありがとう

4

1 に答える 1

1

計算結果のエイリアスを別の計算で使用することはできませんselect(http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html)。ただし、結合とグループ化を使用するようにクエリを再構築することで、必要なものを取得できます。

SELECT DISTINCT 
  w.*, 
  w.CYLcomp + w.CYLint AS nextdue, 
  MAX(a.total_cycles) AS current_cycle
  w.CYLcomp + w.CYLint - MAX(a.total_cycles) AS reminder
FROM workcards w
JOIN airtimes a ON a.nnumber = w.nnumber
WHERE w.basis LIKE '%CYL%' AND w.nnumber='xxxxx'
GROUP BY w.nnumber
ORDER BY CASE nextdue WHEN 0 THEN 1 ELSE -1 END ASC, nextdue ASC
于 2012-12-05T23:29:53.127 に答える