2016-03-15 1 views
-1

У меня есть одна таблицы с этими заголовкамиподзапросов в MySQL ищет в той же таблице

id city date item 

Я заинтересован в идентификации идентификатора с тем же пунктом в том же месяц и подсчитать, сколько повторяется много пунктов приема в тот же месяц. Так что мой запрос в MySQL является:

select a.id, concat(a.id, month(a.date), a.item) as a from table 
where a = (select concat(b.id, month(b.date), b.item) as b from table) 
group by a.id 
having count(a=b)>=1 

Но этот запрос займет слишком много времени и может не работать, не могли бы вы мне помочь?

+0

Не 'id' уникального идентификатора, который идентифицирует запись ? Его название, похоже, подразумевает это. В этом случае не может быть двух вхождений для одного и того же 'id' - каждый' id' является уникальным в таблице. –

+0

введите данные таблицы или структуру –

+0

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

ответ

0

Вы не отреагировали на комментарии, сделанные три часа назад. Но из ваших комментариев к ответу Сета Макклайна я прочитал, что вам нужен список строк, показывающий id (, который, несмотря на его имя, не является уникальным идентификатором таблицы!), месяц, элемент и количество вхождений.

Одна строка на идентификатор, месяц и товар означает: group by id, month, item.

Используйте пункт HAVING для того, чтобы показывать только вхождения> 1.

select id, month(date), item, count(*) 
from mytable 
group by id, month(date), item 
having count(*) > 1; 

Ну, это о том, что Сет McClaine уже сказал вам. И пока вы прокомментировали его ответ, вы не сказали, чего не хватает, чтобы вы приняли его.

+0

спасибо @Thorsten Kettner за ответ, я полагаю, что это потребует более сложного запроса. Эта часть моей жизни называется счастьем !! –

0

Я думаю, вы должны быть в состоянии сделать что-то подобное, что дает вам количество total элементов с соответствующими id, month и item

Select Count(*) as total, month(date) as month, item, id 
From table 
group by (item, month(date), id) 
+1

в вопросе, u ser написал: "тот же месяц" – Cuchu

+1

обновлен, спасибо @Cuchu –

+0

приятно! но если id уникален, этот пример не работает. не полностью понимается как использование идентификатора. – Cuchu

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