Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> liczenie słów zgrupowanych GROUP_CONCAT i sortowanie.
omxd
post 28.04.2013, 16:33:12
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 18.05.2010

Ostrzeżenie: (0%)
-----


Witam,
jestem kiepski mysql dlatego prosze o pomoc.
Mam prostą tabelke:
id_tag name
286 drzewo
285 drzewo
286 twarz
Potrzebuję uzyskać taki wynik po zapytaniu - łącznie z sortowaniem score:
id_tag word_group score
286 twarz,drzewo 2
285 drzewo 1
próbuję:
  1. SELECT
  2. id_tag,
  3. GROUP_CONCAT(name) AS 'word_group',
  4. LENGTH('word_group') - LENGTH(REPLACE('word_group', ', ', ''))+1 AS 'score'
  5. FROM tag
  6. WHERE name='drzewo' OR name='twarz'
  7. GROUP BY id_tag

W obydwu przypadkach w score dostaję "1" i nie wiem jak posortować według score ( chyba muszę sortować przez id_tag ,inaczej się rozsypuję. )

Z góry dzięki!
Go to the top of the page
+Quote Post
mmmmmmm
post 28.04.2013, 20:02:41
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. SELECT
  2. `id_tag`,
  3. GROUP_CONCAT(`name`) AS 'word_group',
  4. Count(`name`) AS 'score'
  5. FROM `tag`
  6. WHERE `name` IN ('drzewo' , 'twarz')
  7. GROUP BY id_tag
  8. ORDER BY 3 DESC
Go to the top of the page
+Quote Post
omxd
post 29.04.2013, 16:13:08
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 18.05.2010

Ostrzeżenie: (0%)
-----


dzięki piękne!


proszę poratujcie mnie jeszcze raz!
  1. SELECT
  2. tag.id_tag AS 'idtag',
  3. GROUP_CONCAT(tag.name) AS 'word_group',
  4. Count(tag.name) AS 'score',item.id AS 'itemid'
  5. FROM `tag`
  6. LEFT JOIN `item`
  7. ON 'idtag'='itemid'
  8. WHERE `name` IN ('drzewo' , 'twarz')
  9. GROUP BY id_tag
  10. ORDER BY 3 DESC

Go to the top of the page
+Quote Post
mmmmmmm
post 29.04.2013, 17:54:07
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


` zamiast '

Ale jak się zastanowię, to jakąś głupotę chcesz zrobić. Może nie głupotę, ale sam nie wiesz co lub jak. Napisz po polsku, co chcesz osiągnąć.
Go to the top of the page
+Quote Post
omxd
post 29.04.2013, 18:16:24
Post #5





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 18.05.2010

Ostrzeżenie: (0%)
-----


Wynik zapytania które to uprzejmie mi podsunąłeś chcę połączyć z inną tabelka item - gdzie item.id ma taką samą wartość jak tag.id_tag.

z góry dziękuję i pozdrawiam
Go to the top of the page
+Quote Post
mmmmmmm
post 30.04.2013, 07:09:17
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. SELECT
  2. `tag`.`id_tag` AS 'idtag',
  3. `item`.`id` AS 'itemid',
  4. GROUP_CONCAT(`tag`.`name`) AS 'word_group',
  5. Count(`tag`.`name`) AS 'score'
  6. FROM `tag`
  7. LEFT JOIN `item`
  8. ON `tag`.`id_tag`=`item`.`id`
  9. WHERE `tag`.`name` IN ('drzewo' , 'twarz')
  10. GROUP BY `tag`.`id_tag`, `item`.`id`
  11. ORDER BY 3 DESC


Ten post edytował mmmmmmm 30.04.2013, 07:09:42
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 22:52