Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

MySQL resultaat met unieke rijen met aantal voorkomens

Pagina: 1
Acties:
  • 261 views

  • walterego
  • Registratie: November 2006
  • Laatst online: 25-02 22:23
Hoi,

Meestal vind ik elk antwoord t.a.v. MySQL vraagstukken in Google, maar in dit geval weet ik gewoon niet welke termen ik moet gebruiken (en of het uberhaupt mogelijk is). Het volgende is het geval:

Ik ben bezig met een soort van tagging script. Het idee is dat meerdere mensen een object kunnen taggen met een bepaalde tag, en dat daardoor dus wordt bepaald in welke mate een tag bij een object hoort. Daarvoor heb ik drie tabellen gemaakt:

Object (object_id, object_name)
Tag (tag_id, tag_name)
obj_tag_xref (xref_id, object_id, tag_id)

In de obj_tag_xref tabel worden objecten en tags aan elkaar gekoppeld, en daarin kan dus worden opgezocht hoe vaak een tag aan een object is gekoppeld. Dat is ook precies wat ik graag zou willen uitzoeken met een query. Ik zoek dus een query die alle tags voor een object teruggeeft, en het aantal dat de tag voor het gegeven object voorkomt. Het enige wat ik nu kan bedenken is een query waarmee ik alle tags voor een object kan ophalen, om vervolgens per tag weer een query te maken waarin het 'occurences' van de object-tag verhouding geteld worden. Maar ik zou dat graag efficiënter zien.

Iemand ideeën?

  • Pul
  • Registratie: Februari 2008
  • Laatst online: 06-08 13:54

Pul

zoiets:

SELECT
tag_name, count(*)
FROM
Object as o
left join obj_tagxref as r on (o.id = r.o_id)
left join tag as t on (r.t_id = t.t_id)
WHERE
o.id = 13 (of voor welk object je het ook wil)
GROUP BY t.id
ORDER BY count(*) DSC;

  • walterego
  • Registratie: November 2006
  • Laatst online: 25-02 22:23
Wauw Pul. Jij bent een echt goeroe. Werkte bijna meteen (moest wat column names aanpassen omdat ze in mijn db iets anders heten dan ik hier heb geschreven). Super, thnx! _/-\o_

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Mwah, basic SQL kennis hoor (niet om af te doen aan 't goeroe gebeuren hoor ;) ) maar misschien is een SQL tutorialletje geen slecht idee voor je dan. Kijk ook eens naar (bijv.) Hoe werken joins?.

Waar ik niet zo heel blij van word is dat hier de oplossing op een zilveren schaaltje wordt aangedragen:
Give a man a fish and he will eat for a day. Teach him how to fish and he will eat for a lifetime.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.