ugrás a tartalomhoz

MySQL set típusú mező

zakzag · 2011. Jan. 19. (Sze), 14.14
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):

item (
    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?
 
1

Mi a probléma?

Poetro · 2011. Jan. 19. (Sze), 15.45
Az nem derült ki, hogy mi a probléma. Miért baj az, hogy több sor is van? Mivel mind különböző tag-et fog tartalmazni azonos kategóriához.
4

félre

zakzag · 2011. Jan. 22. (Szo), 17.38
Poetro, lehet félrebeszélünk egymás mellett. A feladat egy olyan sql script írása, aminek segítségével egy set típusú mezőből több sort állítsunk elő az eredményhalmazban. A kérdés arra vonatkozott, hogyan lehet ezt MySQL-ben megcsinálni.
2

Más megközelítéssel

Ifju · 2011. Jan. 20. (Cs), 10.04
Más megközelítéssel próbálkozz. :)

É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.
3

...

zakzag · 2011. Jan. 22. (Szo), 17.34
Sajnos az adatbázis szerkezetét nem változtathatom meg, ez egy nagyobb rendszer eleme, az adatbázist más tervezte :(