[sql] group by bzw. distinct | durchs. 3er tab

hi!

ich habe folgendes problem, dass der mssql server, im gegensatz zu mysql alle spalten in der group by clause braucht, die auch ausgegeben werden…
so, das war jetzt ein bisschen vorgegriffen…die tabellenstruktur schaut so aus:

tabelle artikel:
a_id
a_titel
a_beschreibung

zwischentabelle _stichw_art:
sa_a_id //referenz id auf a_id
sa_stichw_id //referenz id auf stw_id

tabelle stichworte:
stw_id
stw_name

die zwischentabelle brauch ich, da jeder artikel beliebig viele stichworte zugewiesen bekommen kann. so, so weit so gut, gescheitert bin ich schlussendlich an der suche. probiert hab ichs mit folgendem sql, statement:

select * from
artikel, _stichw_art, stichworte
where
_stichw_art.sa_a_id = artikel.a_id and _stichw_art.sa_stw_id=stichworte.stw_id and
stichworte.stw_name like „%h%“

h ist dabei der eingegebene suchbegriff…

so weit so gut, funktioniert ja auch eingeitch sehr gut, nur…
wie verhindere ich dass mir artikel doppelt ausgegeben werden ???
wenn 2 stichworte den buchstaben h enthalten kríeg ich das ergebnis gleich 2mal und in folge dann halt noch öfter…
okay, erster versuch distinct…fehlgeschlagen weil ich kein distinct auf so longtext-spalten machen darf (a_beschreibung), oder wie auch immer die heißen, nur text glaub ich, jedenfalls die mit mehr als 255 zeichen…
okay, nächste möglichkeit, group by a_id…fehlgeschlagen weil ich alle die ich ausgeben will in der group by klausel oder in einer aggregatfunktion haben muss, dass aber mit text-spalten beides nicht möglich ist…

hoffe mir kann irgendwer das sql-statement so umbaun, dass das funktioniert…muss ja wohl irgendwie gehen…
ansonsten irgendwelche workarounds…dass ich z.b. pro schleife eine query schick oder so…
naja, egal, vielleicht kann mir ja wer helfen…

danke,
georg

okay, erster versuch distinct…fehlgeschlagen weil ich kein
distinct auf so longtext-spalten machen darf (a_beschreibung),
oder wie auch immer die heißen, nur text glaub ich, jedenfalls
die mit mehr als 255 zeichen…

Naja, DISTINCT entfernt doppelte Datensätze, und wirklich doppelt sind sie ja nicht, weil eben die Stichwort-Spalte anders ist.

okay, nächste möglichkeit, group by a_id…fehlgeschlagen weil
ich alle die ich ausgeben will in der group by klausel oder in
einer aggregatfunktion haben muss, dass aber mit text-spalten
beides nicht möglich ist…

Das ist dasselbe Problem, er weiß natürlich nicht was er mit den unterschiedlichen Text-Spaltenwerten machen soll, was erwartest du da denn bzw. wie hättest du es gerne?

Grüße, Robert

okay, nächste möglichkeit, group by a_id…fehlgeschlagen weil
ich alle die ich ausgeben will in der group by klausel oder in
einer aggregatfunktion haben muss, dass aber mit text-spalten
beides nicht möglich ist…

Das ist dasselbe Problem, er weiß natürlich nicht was er mit
den unterschiedlichen Text-Spaltenwerten machen soll, was
erwartest du da denn bzw. wie hättest du es gerne?

Grüße, Robert

hi!

wie ichs gern hätte, ja das hab ich eh geschrieben…wenn ich die query dann drüber fahren lass, und mehrere stichworte den buchstaben h bzw. die angegebene ziechenkette enthalten krieg ich sie in meiner ergebnisliste doppelt…
und das macht nicht viel sinn…sinn einer suche ist ja, alle artikel zu matchen, bei denen das angegebene kriterium zutrifft… da hat es dann keinen sinn, den gleichen datensatz 5mal am screen lesen zu dürfen…
das wird ja wohl irgendwie gehen…ich bin ja nicht der erste der eine ganz normale suche schreibt…

wie ichs gern hätte, ja das hab ich eh geschrieben

Ich hab gemeint was du gerne in Bezug auf das Stichword-Feld hättest.

Das was du schreibst läßts sich einfach machen, indem du das Stichwort-Feld wegläßt und dann mit DISTINCT oder GROUP BY die doppelten Ergebnisse aussortierst.

Grüße, Robert