0

これは私の単純化されたクエリです:

SELECT `student`.`id`, `student`.`firstname`, `student`.`lastname`,
IFNULL(`review`.`score`, '0') AS `adminreview_score`,
`reviewcolor`.`color` AS adminreview_color FROM (`student`)
LEFT JOIN `review` ON `review`.`student_id` = `student`.`id` AND
review.reviewtype_id = 13
LEFT JOIN `reviewcolor` ON `reviewcolor`.`score` = `adminreview_score`
WHERE `student`.`id` > '0'

そして、これは私が得るエラーです:

Error Number: 1054

Unknown column 'adminreview_score' in 'on clause'

review次の状況では、テーブルに行がない場合があることに注意してください。

`review`.`student_id` = `student`.`id` AND review.reviewtype_id = 13

このような状況で、私はadminreview_scoreとして設定されたいと思います、そして私はまたはempry()であること0を望みreviewcolor.colorますNULL

ありがとうございました

4

2 に答える 2

1

これを試してください:(エイリアスを実際の式に置き換えました。SELECT句のエイリアスは残りのSQL式では使用できないことに注意してください。)

SELECT `student`.`id`, `student`.`firstname`, `student`.`lastname`,
IFNULL(`review`.`score`, '0') AS `adminreview_score`,
`reviewcolor`.`color` AS adminreview_color 
FROM (`student`)
    LEFT JOIN `review` ON `review`.`student_id` = `student`.`id` AND review.reviewtype_id = 13
    LEFT JOIN `reviewcolor` ON `reviewcolor`.`score` = IFNULL(`review`.`score`, '0')
WHERE `student`.`id` > '0'
于 2012-07-02T19:49:13.913 に答える
1

変数を使用できます。これを試してください

set @a:='';

SELECT `student`.`id`, `student`.`firstname`, `student`.`lastname`,
IFNULL(@a:=`review`.`score`, @a:=0),
`reviewcolor`.`color` AS adminreview_color FROM (`student`)
LEFT JOIN `review` ON `review`.`student_id` = `student`.`id` AND
review.reviewtype_id = 13
LEFT JOIN `reviewcolor` ON `reviewcolor`.`score` = @a
WHERE `student`.`id` > '0'
于 2012-07-02T19:54:06.547 に答える