[mysql] count i tablica w PHP

0

Próbowałem zadać to pytanie na forum.php.pl, ale nie uzyskałem odpowiedzi. Stąd też pytanie jest jak gdyby zadane 3 razy w tym poście, ponieważ starałem się jak najdokładniej wyjaśnić o co mi chodzi.


Witam. Muszę wykonać dość nietypowe zapytanie. Posiadam tablicę liczb, np:
[25,76,3,5,3,6,...]
gdzie niektóre liczby mogą się powtarzać.

Chciałbym teraz zliczyć, ile razy ID danego obiektu znajduje się w tej tablicy, coś w stylu:

SQL
SELECT COUNT(id IN (tablica_jak_wyzej)) AS liczba

Jak skonstruować odpowiednie zapytanie w MySQL ?


Muszę posortować elementy z bazy, wg. tego, ile razy ich ID pojawia się w mojej tablicy, którą mam w php (tablicy liczb). Elementów w bazie może być ponad 100.000.

Przykład:
w bazie mam tabelę

id | nazwa

i w niej rekordy

1|Adam
2|Zośka
3|Krzych

,oraz tablicę w php $tablica = array(1,2,3,1,2,1);

chciałbym otrzymać odpowiedź w tej kolejności:
Adam (bo jego ID występuje w tablicy 3 razy), Zośka, Krzych


Mi chodzi o to, że mam w php tablicę z powtarzającymi się wartościami, gdzie przechowuję numery ID obiektów z bazy danych. Teraz chcę wybrać te obiekty wg. tego, ile razy ich ID pojawia się w tej mojej tablicy.

0
select count(distinct id) from tabela
0

OK, ale gdzie tutaj ta moja tablica z PHP ?

0
SELECT id, COUNT(id) FROM tabelka GROUP BY id

a to drugie, z sortowaniem było by mniej więcej tak

SELECT a.id, b.name, COUNT(a.id) FROM tab_z_id a, tab_z_nazwami b WHERE tab_z_id.id = tab_z_nazwami.id GROUP BY id, name ORDER BY 3

i na przyszłość http://dev.mysql.com/doc/refman/5.0/en/select.html

intol napisał(a)

OK, ale gdzie tutaj ta moja tablica z PHP ?

to już sobie musisz sam policzyć ile wystąpień ma każdy integer i posortować a potem w pętli odpytać bazę o nazwę (czy co tam chcesz) dla danego id - SQLem tego nie zrobisz.
BTW możesz tą tablicę wrzucić do tabeli tymczasowej np. i wtedy masz zapytanie jak wyżej

0

Mi w gruncie rzeczy chodzi o jeden i ten sam problem, opisałem go po prostu na 3 różne sposoby.

Misiekd: dzięki za odpowiedź, ale to niestety nie jest takie łatwe. W Twoim zapytaniu stosujesz tab_z_id, ja mam natomiast osobną tablicę w PHP.

Zapewne będę musiał pokombinować z widokami (?).

0

widoki Ci nic nie dadzą bo nie masz tych danych w bazie. Wyjścia są dwa i masz oba napisane wyżej (po edycji)

0

OK, dzięki, to rozwiązuje mój problem. Widoki - chodziło mi o tablicę tymczasową. Z tym liczeniem - też nad tym myślałem, ale chciałem się dowiedzieć czy jest może wyjście żeby wszystko zrobić po stronie MySQL.

Dziękuję za zainteresowanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0