Správné zacházení s datovým typem SET?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
neznamy_uzivatel
Člen | 115
+
0
-

Ahoj,
mám trochu problém s datovým typem SET, snad někdo pomůže..

Napřed vysvětlím, o co mi jde:
V aplikaci používám nette database a vyhledávání mám řešené pomocí sphinx. DB má miliony položek, počítám s desítkami miliónů. Mám asi 10 sloupců, podle kterých potřebuju filtrovat (+ 1 fulltext)
Některé sloupce mohou mít více hodnot (např. několik autorů knihy), takže sloupec autor může být „Pepa“, nebo „(pepa, honza, martin)“
Předem neznám jména všech autorů, časem můžu přidat knihu, kde bude dosud neznámé jméno. Při dotazu na nějakého autora potřebuji nejen čistě jeho knihy, ale i ty, kde je jen jedním z autorů.
Místo jmen autorů používám jejich INT id
Nakonec bych to rád dostal do sphinxu – sql_attr_multi

Předpokládám, že je to řešitelné právě pomocí datového typu SET, bohužel se mi ho nedaří použít. I když dám v phpMyAdmin vytvořit nový sloupec typu SET, skončí to špatnou syntaxí.

např.

ALTER TABLE `dtsettest` ADD `autor_set` SET NOT NULL

vypíše:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL' at line 1

To stejné i když za SET definuju nějaké hodnoty.

Otázka tedy je, jak správně tohle filtrování řešit a jak správně použít SET?