2016-10-23 6 views
1

Мне интересно, есть ли способ сделать эту работу. Я выводил таблицу «WHERE lie_start = 'green» (и кучу других условий, которые я не хочу повторять), нужно получить номер (и несколько другой информации). Дополнительно мне нужно количество записей с дополнительным условием lie_finish = 'holed'. В настоящее время я получаю ошибку: Таблица mydb.x не существует.Подзапрос в select statement can not find производная таблица?

SELECT 
    COUNT(*) AS total, 
    (SELECT COUNT(*) FROM x WHERE lie_finish='holed') as holed 
FROM (SELECT * FROM mydb.strokes WHERE lie_start='green') as x 

ответ

1

Необходимо повторить название таблицы. Псевдоним таблицы не распознается:

SELECT COUNT(*) AS total, 
     (SELECT COUNT(*) FROM mydb.strokes WHERE lie_finish='holed') as holed 
FROM (SELECT * FROM mydb.strokes WHERE lie_start='green') as x; 

Однако, это гораздо проще, как написано:

select count(*) as total, sum(lie_finish = 'holed') as holed 
from mydb.strokes s 
where lie_start = 'green';