MySQL set típusú mező
Lenne egy kérdésem, amire hirtelen nem tudok megoldást, de nagyon szeretném megoldani:
van egy tábla (csak a legfontosabb mezők):
Tehát vannak elemek, aminek van egy főkategóriája, valamint tagek tartoznak hozzá, amik csak egy meghatározott halmazból kerülhetnek ki, de egy elemhez több érték is tartozhat.
A feladat statisztika készítése, amelyben szerepel:
category, tag, count
Azaz megadja, hogy az adott kategórában az adott tag-gel rendelkező elemekből mennyi van.
Ez nagyon egyszerű lenne, ha a tag mező mondjuk szintén string lenne, mert egy
clause megoldaná a problémát, itt viszont a tags mező több értéket is tartalmazhat, ezzel együtt több sort is kell létrehoznia az adott eredményhalmazban.
Valaki tud megoldást erre a problémára?
■ van egy tábla (csak a legfontosabb mezők):
item (
id: int, autoincrement,
category: string,
tags: set ('a','b','c','d','e','f')
)
id: int, autoincrement,
category: string,
tags: set ('a','b','c','d','e','f')
)
Tehát vannak elemek, aminek van egy főkategóriája, valamint tagek tartoznak hozzá, amik csak egy meghatározott halmazból kerülhetnek ki, de egy elemhez több érték is tartozhat.
A feladat statisztika készítése, amelyben szerepel:
category, tag, count
Azaz megadja, hogy az adott kategórában az adott tag-gel rendelkező elemekből mennyi van.
Ez nagyon egyszerű lenne, ha a tag mező mondjuk szintén string lenne, mert egy
SELECT COUNT(*) FROM item GROUP BY category, tag
clause megoldaná a problémát, itt viszont a tags mező több értéket is tartalmazhat, ezzel együtt több sort is kell létrehoznia az adott eredményhalmazban.
Valaki tud megoldást erre a problémára?
Mi a probléma?
félre
Más megközelítéssel
Én a tag-ket külön táblában tárolnám, ha ilyen típusú lekérdezésre van szükséged, és egy kapcsolótáblával kötnöm az item tábla rekordjaihoz, így joinnal le tudod kérdezni az egyes tag-khez kapcsolodó item-ket, és az eredményhalmazon már el tudod végezni a group by műveletet.
...