2012-03-30 2 views
0

Я упростил следующий запрос mysql, который подсчитывает количество раз, когда первичный ключ из таблицы1 встречается в качестве внешнего ключа в таблице2.Выберите количество внешних ключей на основе определенного пользователем предела

SELECT table1.*, COUNT(table2.id) AS 'value' 

FROM table1 INNER JOIN table2 ON table1.id = table2.id 

WHERE table1.lastname LIKE 'smith' 

WHERE table1.firstname LIKE 'john' 

GROUP BY table2.id; 

Я хотел бы изменить его так, что он выбирает только счетчики, которые выше определенного порога, то есть, если идентификатор Джона Смита происходит 10 раз в table2, и мой порог 20, его запись не будет выбран.

+0

Вы не можете сгруппировать с помощью только table2.id.All селектов столбцы следует использовать в GROUP BY заявление. – Teja

+0

Нет, они не должны. – MichaelRushton

+0

@deathonater, я понимаю, что 'table2.id' не уникален? – MichaelRushton

ответ

0
GROUP BY table2.id 
    HAVING COUNT(table2.id) >= @Threshold 
+0

Работали как очарование! Спасибо! – deathonater

0
SELECT table1.*,table2.value as value 
FROM table1, 
(
SELECT table2.id, COUNT(table2.id) AS 'value' 

FROM table1 INNER JOIN table2 ON table1.id = table2.id 

WHERE table1.lastname LIKE 'smith' AND table1.firstname LIKE 'john' 

GROUP BY table2.id 
HAVING COUNT(table2.id)>=20 
) table2 
WHERE table1.id=table2.id; 
+0

спасибо, но это не делает то, что я хотел бы, кажется, что он возвращает большое количество данных, даже когда я использовал очень специфические параметры. – deathonater

+0

Можете ли вы разместить некоторые данные образца и желаемые o/p .. – Teja

Смежные вопросы