(Новичок) MySQL View

Я новичок в SQL и, вероятно, поступаю неправильно, но не могли бы вы помочь?

Мне нужно создать VIEW в MySQL, но я не могу понять, как объединить эти два оператора SQL, так как VIEW не принимают несколько SELECTS или переменных.

Примечание: второй оператор отлично работает при замене переменной @numberOfGames на правильное число (вычисляется вручную).

Первое утверждение - вернуть общее количество игр за год:

SELECT COUNT( id ) INTO @numberOfGames FROM tblgames WHERE gdate LIKE '2014%';

Второе утверждение - для создания данных VIEW:

SELECT
p.player AS player,
COUNT( c.gid ) AS gameCount,
SUM( c.cash ) AS cash,
ROUND( AVG( c.cash ), 2 ) AS avg,
SUM( ( CASE WHEN ( c.wotn > 0 ) THEN c.wotn ELSE 0 END ) ) AS wotn,
SUM( ( CASE WHEN ( c.cash > 0 ) THEN c.cash ELSE 0 END ) ) AS cashWon,
SUM( ( CASE WHEN ( c.cash < 0 ) THEN c.cash ELSE 0 END ) ) AS cashLost,
ROUND( AVG( ( CASE WHEN ( c.cash >= 0 ) THEN c.cash END ) ),2 ) AS avgWin,
ROUND( AVG( ( CASE WHEN ( c.cash < 0 ) THEN c.cash END ) ),2 ) AS avgLoss,
IF(
( ( COUNT( c.pid ) > ( @numberOfGames / 3 ) ) AND ( COUNT( c.pid ) > 2 ) ),
ROUND( ( ( AVG( c.cash ) * 10 ) + 200 ), 2 ),
ROUND( AVG( c.cash ), 2 )
) AS sortingPoints
FROM tblplayers p
LEFT JOIN tblcash c ON p.id = c.pid
LEFT JOIN tblgames g ON g.id = c.gid
WHERE c.cash IS NOT NULL AND g.gdate LIKE '2014%'
GROUP BY c.pid
ORDER BY sortingPoints DESC;

Я использую переменные @numberOfGames для простого математического уравнения, которое проверяет, что игрок сыграл более трети от общего числа игр в году.

Я надеюсь, что кто-то может помочь мне указать правильное направление.

1 ответ

Вы упускаете из виду то, что делает представление.
Вы не можете сохранить несколько выписок в одном представлении. Это все равно что пытаться сохранить две таблицы в одной таблице. Это невозможно.

Что вам нужно сделать, это запустить свой первый выбор, именно так, как он у вас есть. Сохраните это как представление. Затем вы можете использовать этот набор результатов, как если бы это была любая другая живая таблица, и присоединить его к другим таблицам в последующих инструкциях Select.

Другие вопросы по тегам