SQL ГДЕ В СОЕДИНЕНИИ

0

Я получаю неизвестный столбец, где статья

SELECT 'table_1'.*, COUNT(table_2.some_id) AS table2count 
FROM 'table_1' 
LEFT JOIN 'table_2' ON table_1.id=table_2.some_id 
WHERE ('table2count' > 2)

Я также пробовал

SELECT 'table_1'.*, COUNT(table_2.some_id) AS table2count 
FROM 'table_1' 
LEFT JOIN 'table_2' ON table_1.id=table_2.some_id AND ('table2count' > 2)
Теги:
join

2 ответа

0
Лучший ответ

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

SELECT 'table_1'.some_column, COUNT(table_2.some_id) AS table2count 
FROM 'table_1' 
LEFT JOIN 'table_2' ON table_1.id=table_2.some_id 
group by 'table_1'.some_column, table_2.some_id having table2count > 2

Всякий раз, когда вы используете group by, все столбцы в select должны быть частью group by исключением тех, которые являются частью агрегатной функции, такой как sum, count и т.д.

  • 0
    Это работает, спасибо
0

Вы, вероятно, хотите:

SELECT 'table_1'.*
FROM 'table_1'
WHERE EXISTS (SELECT COUNT(table_2.some_id)
              FROM table_2
              WHERE table_1.id=table_2.some_id 
              HAVING COUNT(table_2.some_id) > 2);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню