2013-10-15 2 views
0

Exemple:Подсчет полей с тем же значением

У меня есть HUGE QUERY с union, который приносит много данных, среди этих данных, я хочу знать, сколько раз записи одного и того же человека существует только поле name , как:

Гавриила
- Запись 1
- Запись 2
- Запись 3

João
- Запись 1
- Запись 2
- Запись 3

Так Габриэль и João каждый из них имеет 3 строки данных в моей RecordSet, мне нужно иметь другое поле, которое рассчитывает, что многие времена это повторяется, но я нужны все строки в одно и то же время, вот почему я Can NOT использовать groupby.

Update MySql Посмотреть

+4

Ваш запрос не читается, и он не позволяет вам помочь. Сделайте efort и удалите мусор из запроса. – Pellared

+0

Каждый раз, когда я пытаюсь удалить какой-то барахло и оставляю только сущность, я получаю отрицательный результат ... Я попробую – PlayHardGoPro

+1

Посмотрите на ответ SQL на этот вопрос: http://stackoverflow.com/questions/19385738/distinguish-duplicates-in -a-foreach-loop-from-sql/19385994 В вашем случае, если вы сделаете вышеуказанный запрос в VIEW, тогда он упростит использование подхода в предоставленной ссылке, чтобы сделать INNER JOIN на (SELECT GROUP BY) из того же VIEW и получить ваши итоговые суммы. Я согласен с другим комментатором в том, что этот запрос выглядит ужасно, поэтому вы можете столкнуться с проблемой производительности с помощью подхода, который я предлагаю, но он даст вам то, о чем вы просили. –

ответ

1

Теперь, когда у вас есть вид оборачивать вашу сложную логику, можно структурировать запрос так, чтобы получить то, что вы ищете:

SELECT vt.*, vtij.nome_count 
FROM view_teste vt 
    INNER JOIN (SELECT Nome, count(1) as nome_count FROM view_teste 
     WHERE [additional_filter_conditions] 
      GROUP BY Nome) vtij on vtij.Nome = vt.Nome 
WHERE [additional_filter_conditions] 

Дополнительные замечания: (1) Это может быть неэффективным, но стоит попробовать, так как вы не создали этот запрос! Оптимизация этого запроса будет зверюшкой. (2) У вас есть предложение ORDER BY в вашем представлении, которое является хитом производительности, который не нужен. Вы должны удалить это и выполнить требуемый ORDER BY в своем запросе, а не в своем представлении.

+0

Я знаю, что этот запрос испорчен, но, как я уже сказал, это было сделано давно, а не мной. Я немного смущен, где именно я должен запустить это? Я имею в виду, я никогда не использовал вид раньше ...; X Я знаю, что вам не нужно отвечать на такой глупый вопрос, но если бы вы могли оказать мне услугу, hehe = x Спасибо! – PlayHardGoPro

+1

@PlayHardGoPro - после того, как у вас есть VIEW в базе данных, вы обрабатываете его так же, как и таблицу при написании запроса. http://stackoverflow.com/questions/6015175/difference-between-view-and-table-in-sql –

+0

спасибо! Я просто смущен о том, как/Где я собираюсь вставить этот фрагмент запроса в середине существующего ... – PlayHardGoPro

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