daniel2
I'm new here

Abfrage mit LIKE auf verknüpfte Datenquelle

Hallo Community,

ich bin gerade überfordert mit einer Datenquellenabfrage auf eine verknüpfte Datenquelle (m:n) – wohl mit Zuhilfenahme von LIKE.

Mein Szenario:

Eine Datenquelle "articles", die mit "tags[tags]" auf die Datenquelle "tags" referenziert (m:n).

Die Datenquelle "tags" hat nur das zusätzliche Feld "name" für den Namen des Schlagwortes.

Eine FS_LIST-Komponente im Template, dass ein oder mehrere Schlagworte aus "tags" referenziert.

Der Filter soll folgendes können:

Alle Einträge in "articles" finden, die wenigstens ein Schlagwort aus der FS-LIST-Komponente verknüpft haben.

Wurden also in der FS_LIST die Schlagworte "Projekt", "Förderung" und "Kapital" gewählt, so sollen alle Einträge in "articles" gefunden werden, die wenigstens eines der Schlagworte verknüpft haben.

Mein erster Ansatz ist dieser Filter:

<QUERY entityType="articles">

          <FILTERPARAM parameter="tags" datatype="java.lang.String" value="Projekt"/>

          <LIKE attribute="tags.name" parameter="tags"/>

</QUERY>

Dieser landet natürlich Treffer. Nur wie übergeb ich dem Parameter "tags" mehrere Schlagwortnamen?

Oder bau ich's falsch auf? Muss ich doch über die fs_id abfragen?

Dummerweise können massig Schlagwörter verlinkt werden, sonst wäre ein <OR>-Node sicherlich eine Lösung.

Danke für Euren Support im Voraus,

Daniel

10 Replies
Peter_Jodeleit
Crownpeak employee

Du wirst um ein "or" wohl nicht herumkommen. Die Frage ist, ob du wirklich "like" benutzen musst, eventuell reicht ein "equal"? Oder man vergleicht sogar auf die ID des 'tags', die hat man ja in der Liste. Hätte den Vorteil, weniger Last auf der Datenbank zu erzeugen.

Peter

Danke Dir, Peter, für die Antwort.

So hab ich es gelöst:

<QUERY entityType="articles">

    <FILTERPARAM parameter="tags" datatype="java.lang.Integer" value="19,3022"/>

    <EQ attribute="tags.fs_id" parameter="tags"/>

</QUERY>

Hatte nicht erwartet, dass so auch Datensätze gefunden werden, die z. B. nur mit ID 19 aus der "tags"-Datenquelle verknüpft sind.

Viele Grüße,

Daniel

0 Kudos

Hallo Community,

leider hab ich nun ein Problem mit dem Einbinden dieser Query in die FS_LIST-Komponente im WebClient:

Die zuletzt genannte Query selbst zeigt mir z. B. zwei gefundene Einträge an – binde ich diese Abfrage nun wie folgt in die FS_LIST ein, so erhalte ich viel mehr (würde sogar sagen, alle) Ergebnisse in dem Suchfenster der Eingabekomponente im WebClient. Im JavaClient funktioniert die Übergabe wunderbar.

<QUERY name="content_ext.sql_query_refs_corresponding_tags">

     <PARAM name="tags">19</PARAM>

  </QUERY>

  <TABLE>content_ext.refs</TABLE>

Könnte das ein Bug sein? Mach ich was falsch?

Weitere Frage: Lässt sich der Parameter auch flexibel übergeben? Z. B. mit einem $CMS_VALUE()$?

Danke und Grüße,

Daniel

Hallo Daniel,

tritt das Problem noch auf?

Viele Grüße

Thorsten

0 Kudos

Hallo Thorsten,

soeben nochmal mit 5.0.318.5750 getestet und leider noch immer das beschriebene Verhalten.

Danke der Nachfrage und viele Grüße,

Daniel

0 Kudos

Hallo Daniel,

kannst du bitte mal deine Vorlage posten in der du die FS_LIST aufbaust.

Viele Grüße

Thorsten

0 Kudos

hallo thorsten,

na klar - mit dieser hab ich getestet:

       <FS_LIST name="stRefs" hFill="yes" rows="5">

         <DATASOURCE type="database" useLanguages="no">

           <ACTIONS>

             <ACTION name="NEW"/>

             <ACTION name="ADD"/>

             <ACTION name="REMOVE"/>

             <ACTION name="EDIT"/>

           </ACTIONS>

           <COLUMNS>

             <COLUMN show="no">#identifier</COLUMN>

             <COLUMN show="no">#fs_id</COLUMN>

           </COLUMNS>

           <LAYOUT>

             <ADD component="stackedview" constraint="hide"/>

             <ADD component="toolbar" constraint="top"/>

             <ADD component="overview" constraint="center"/>

           </LAYOUT>

           <QUERY name="content_ext.sql_query_refs_corresponding_tags">

             <PARAM name="tags">72004</PARAM>

           </QUERY>

           <TABLE>content_ext.refs</TABLE>

         </DATASOURCE>

         <LANGINFOS>

           <LANGINFO lang="*" label="Test" description=""/>

         </LANGINFOS>

       </FS_LIST>

viele grüße,

daniel

0 Kudos

Hallo Daniel,

ich habe mir das Thema noch mal angeschaut.

WebEdit berücksichtigt das Query in der FS_LIST nicht. Der Fehler wird intern unter der ID #144223 behandelt.

Viele Grüße

thorsten

hallo thorsten,

vielen dank für die info!

viele grüße zurück,

daniel

0 Kudos