Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie unikalnych wartości w wielu kolumnach
Forum PHP.pl > Forum > Bazy danych > MySQL
Mike0
Witam serdecznie,

Właśnie pracuję nad pewnym projektem i próbuje złożyć zapytanie MySql, które zliczy mi ilość wystąpień użytkowników w tabeli. I byłoby to banalne zagadnienie, ale...

Załóżmy, że mamy tabelę `friends`, która wygląda tak:

Kod
id | user_id | friend_id | created | accepted


a w niej:
Kod
1 | 1 | 2 | 2012-03-05 | 1
2 | 3 | 2 | 2012-03-05 | 1


I teraz chcę zliczyć ilość użytkowników (więc ważne są tu zarówno pola user_id i friend_id) którzy są zaprzyjaźnieni. Czy da się to zrealizować przez COUNT i GROUP BY? Osobiście próbowałem na wiele sposobów, ale ciągle zwracało mi niepoprawną liczbę (ważne jest, żeby każde ID użytkownika było zliczone tylko raz).

Więc dla powyższego przykładu zapytanie powinno zwrócić 3.

Czy muszę odwołać się do brzydkiej metody i zaangażować pętlę w php?

proszę o pomoc, wydaje mi się że zagadnienie jest dość ciekawe.
alegorn
select (count(user_id) + count(friend_id)) as ile from ... group by user_id friend_id



powinno dzialac.

j.
Mike0
Witam, dziękuję za zainteresowanie się tematem.

Niestety to nie działa, a dokładniej nie działa tak jak bym chciał. Próbowałem z tym już wcześniej. Moim zdaniem należaloby połączyć 2 kolumny w 1 i potem zrobić count, jest coś takiego możliwe? jak?

btw. Zapytanie, które podałeś zwraca coś takiego (a ja tez oczekuje 1 liczby):
Kod
ile
2
2
d3ut3r
Powinno dać dobry wynik smile.gif

  1. SELECT COUNT( `tmp` ) AS `ile`
  2. FROM (
  3.  
  4. SELECT DISTINCT `user_id` AS `tmp`
  5. FROM friends
  6. UNION
  7. SELECT DISTINCT `friend_id` AS `tmp`
  8. FROM friends
  9.  
  10. ) AS xxx


ostatnie AS xxx nie ma praktycznie znaczenia możesz za xxx wstawić cokolwiek
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.