Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zapytanie SELECT COUNT
Forum PHP.pl > Forum > Bazy danych > MySQL
simon86
Witam. Chciałbym prosić o poradę wink.gif. Pytanie moje jest takie, czy w zapytaniu SELECT COUNT można zliczać rekordy nie tyle co identyczne, ale podobne??snitch.gif
Przykładowa sytuacja:
System zgłoszeń. Pani zgłasza zepsuty komputer. Jego numer inwentarzowy to np. T-7-2/12345. Pani zgłosiła go za pierwszym razem pod nazwą 12345, natomiast za drugim razem zgłosiła go pod nazwą /12345. Czy można to wziąć pod uwage w zapytaniu SELECT COUNT??

Ten przykład jest mi potrzebny, ale byłby lepszy gdyby można było zliczać rekordy podobne (nie identyczne) - a tego brakuje w poniższym zapytaniu:
SELECT nr_zest, COUNT(nr_zest) as ile FROM zgloszenia WHERE typ='Informatyczna' GROUP BY nr_zest ORDER BY ile DESC LIMIT 10

Proszę o wskazówki smile.gif
pmir13
Jest to możliwe jeśli precyzyjnie zdefiniujesz podobieństwo, przykładowo
  1. SELECT SUBSTRING(nr_zest, -5) AS sam_numer,
  2. COUNT(*) AS ile
  3. FROM zgloszenia
  4. WHERE typ='Informatyczna'
  5. GROUP BY sam_numer
  6. ORDER BY ile DESC LIMIT 10

Teoretycznie można nawet sobie funkcję zdefiniować, która by z podanej nazwy zgłoszenia robiła jakąś unormowaną i wstawić zamiast SUBSTRING, to wszystko jednak będzie miało zły wpływ na wydajność takiej bazy. Nie po to wymyślono indeksy żeby dobrowolnie z nich rezygnować robiąc jakieś dodatkowe działania na tym co grupujemy. Zgłoszenia powinny mieć dokładnie ustalony format i od tego jest aplikacja, by Pani nie miała możliwości wpisać tego samego zgłoszenia pod wieloma różnymi numerami. Ewentualnie aplikacja powinna to robić automatycznie, a jeśli możliwa jest sytuacja gdzie potrzeba byłoby więcej numerów to jakieś inne pole powinno służyć do jednoznacznej identyfikacji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.