Join-Problem [Gelöst]

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    13. 04. 2006, 16:21

    Hallo,

    ich habe eine Ext, in der ich 2 Tabellen habe: Details und Kategorien.
    Die Kategorien habe ich über einen Left Join eingebunden.

    Nun habe ich die Ext erweitert, so das man Details mehreren Kategorien zuordnen kann. Dadurch funktioniert der Weg über Left Join aber nicht mehr, da das Feld ja jetzt eine Kommaliste beinhaltet.
    Wie bekomme ich am besten die Zuordnung hin, hat jemand einen Ansatz für mich ?


  • 1
  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    13. 04. 2006, 23:24

    Ich habe das Problem lösen können, auch wenns vll nicht ganz glücklich ist, mit Hilfe eines full joins und einer GROUP-Anweisung. So tauchen die Datensätze mit Kommaliste entsprechend mehrfach auf.

  • TW TW
    Jedi-General
    0 x
    1560 Beiträge
    0 Hilfreiche Beiträge
    14. 04. 2006, 22:40

    hm.......
    ein find in set()
    in der mysql query hätt es vermutlich auch getan ;)

    cu

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 00:55

    kannst Du mir das näher erläutern, was Du meinst ?

  • TW TW
    Jedi-General
    0 x
    1560 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 12:32

    na so wie ich das verstanden hatte, wolltest du doch details mehreren kategorien zuordnen und diese dann entsprechend den kategorien wieder ausgeben.....

    na ja ich hätte das dann so gelöst (beispiel)

    [CODE]$identy = $catid;

    $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
    '*',
    'tx_deineextension_items',
    'pid = '.$this->conf["pid_list"].' AND find_in_set('.$identy.',deineextension_categorie)
    '.$this->cObj->enableFields("tx_deineextension_items").'',
    '',
    'deineextension_title asc',
    ''.($this->piVars['pointer']*$this->conf['step']).','.$this->conf['step'].''
    );
    [/CODE]
    es sei denn ich habe dich komplett missverstanden, dann habe ich das alles hier nicht erwähnt *gg*

    cu

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 13:26

    interessant :)

    find_in_set kenn ich noch gar nicht, das schau ich mir sofort an.

    Lässt diese Abfrage auch eine Gruppierung nach Kategorie zu, bzw. werden die Details dann entsprechend der Zuweisung auch mehrfach ausgegeben ? Das war mein Hauptproblem.
    Daher benutze ich auch komplett selbstdefinierte Queries statt exec_SELECTquery

    Vielen Dank für die Anregung !

    vg - frohe Ostern
    Steffen

  • TW TW
    Jedi-General
    0 x
    1560 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 14:24

    hi,
    mit find_in_set() lassen sich die kategorien dann entsprechend dem wert in $identy weider ausgeben...

    ein group by kannst du in der abfrage wie folgt integrieren.

    [CODE]$identy = $catid;

    $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
    '*', //felder
    'tx_deineextension_items', //from
    'pid = '.$this->conf["pid_list"].' AND find_in_set('.$identy.',deineextension_categorie)
    '.$this->cObj->enableFields("tx_deineextension_items").'', //where
    'deineextension_title',//group by
    'deineextension_title asc', //sorting
    ''.($this->piVars['pointer']*$this->conf['step']).','.$this->conf['step'].'' //limit
    );
    [/CODE]

    cu

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 14:36

    hi,

    das meinte ich nicht, da ich nach der category gruppieren muss, auch nach category.title sortieren muss.
    Da komme ich um einen join nicht drumrum - und da wären wir wieder beim Anfangsproblem :D

  • 1