sql having in typoscript [Gelöst]

  • xlarge74 xlarge74
    Padawan
    0 x
    40 Beiträge
    0 Hilfreiche Beiträge
    19. 08. 2012, 01:16

    hallo

    wie geht man denn mit einer having-clause in typoscript um?
    oder wie bekommt man sonst ein count(*) =xxx unter ?


  • 1
  • xlarge74 xlarge74
    Padawan
    0 x
    40 Beiträge
    0 Hilfreiche Beiträge
    19. 08. 2012, 12:27

    das ist mein code ... vielleicht gits ja andere probleme, die ich jetzt so nicht sehe.

    1. 30=COA
    2. 30{
    3. 10 = CONTENT
    4. 10{
    5. table = tt_news
    6. pidInList =46
    7. where.data = GP:tx_ttnews|cat
    8. where.wrap = uid_foreign in (|)
    9. join = tt_news_cat_mm ON (tt_news_cat_mm.uid_local = tt_news.uid)
    10. andWhere.data = GP:cnt
    11. andWhere.wrap = having count(*)=|
    12. groupBy = title
    13. orderBy = title
    14. }
    15. renderObj = COA
    16. renderObj{
    17. 10 = TEXT
    18. 10{
    19. field = title
    20. wrap = |<br>
    21. }
    22. }
    23. }
    24. }

  • LuP LuP
    Jedi-Meister
    0 x
    496 Beiträge
    1 Hilfreiche Beiträge
    19. 08. 2012, 17:19

    Hallo,

    ich kann nicht ganz nachvollziehen, was Du mit dem SELECT bezwecken willst. Vor welchem Hintergrund hast Du den zusätzlichen GP-Parameter cnt eingeführt und warum willst Du gruppieren? Wenn Du erklären würdest, was Du mit dem ganzen ausgeben möchtest, könnte ich vielleicht einen Ansatz finden.

    Kleiner Hinweis am Rande: bei GROUP BY macht es nur Sinn - wenn Du hinter SELECT nur Spalten hast, die entweder in der Gruppierung stehen oder Aggregatfunktionen sind.

    VG,
    LuP

  • xlarge74 xlarge74
    Padawan
    0 x
    40 Beiträge
    0 Hilfreiche Beiträge
    19. 08. 2012, 19:11

    [quote="LuP"]
    Hallo,

    ich kann nicht ganz nachvollziehen, was Du mit dem SELECT bezwecken willst. Vor welchem Hintergrund hast Du den zusätzlichen GP-Parameter cnt eingeführt und warum willst Du gruppieren? Wenn Du erklären würdest, was Du mit dem ganzen ausgeben möchtest, könnte ich vielleicht einen Ansatz finden.

    Kleiner Hinweis am Rande: bei GROUP BY macht es nur Sinn - wenn Du hinter SELECT nur Spalten hast, die entweder in der Gruppierung stehen oder Aggregatfunktionen sind.

    VG,
    LuP
    [/quote]

    hallo
    danke erstmal, dass du zeit investierst...

    um ein wenig auszuholen, ich hab für tt_news einen filter selbstgebaut mit javascript und typoscript .... jetzt funktioniert der categoryMode 2 (UND verknüpfung) nicht bei tt_news, dieser bug liegt schon seit version 3.0.1 vor und wird nicht gefixed :-( .... somit habe ich mir ein sql selbstgeschrieben mit direktem zugriff auf die db ohne das plugin bei der ansicht mit der UND verknüpfung ..

    kurzes beispiel ....
    meine news heissen "übungen"
    es gibt 4 hauptkategorien mit jeder menge childs
    ich habe jetzt pro hauptkategorie einen filter ...

    die übung xyz hat sub1 sub5 und sub6 zugeordnet

    wenn ich jetzt sub1 sub5 und sub 6 auswähle .. soll er nur übungen anzeigen, die wirklich diese 3 hauptkategorien haben(hier liegt das prob bei categoryMode 2, diese macht ODER verknüpfungen, zeigt also alle übungen an, die zumindest eine der subs hat) ...

    zu meinem sql statement

    1. SELECT * FROM `tt_news` JOIN tt_news_cat_mm ON uid = uid_local WHERE uid_foreign IN (array1) GROUP BY title HAVING COUNT(*) =cnt

    da ich in javascript bereits die ausgewählten kategorien in den url übergebe nehme ich diese her lege sie in

    1. uid_foreign IN (array1)

    (ich weiß, dass auch hier ODER verknüpft wird) und lasse mir die übungen ausgeben, welche zu den kategorien passen .... hier kommt natürlich jede übung mit jeder zugeordneten kategorie als record ...deswegen das group by und zu guter letzt die aggregratsfuktion having bekommt von javascript ebenfalls über den url die anzahl der ausgewählten kategorien übergeben.... somit sage ich dem sql statement, dass er nur solche titel anzeigen soll, die alle kategorien zugeordnet haben..
    grundsätzlich kann ich sql und weiß nur nicht wie das in typoscript realisieren soll ... natürlich denk ich auch oft sehr kompliziert, deswegen kann es sein, dass es eine einfachere lösung gibt

    wenns zu kompliziert war, frag einfach nach bitte ;-)

    Anhänge (1)
    select.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document 0,00 B 106 heruntergeladen
  • LuP LuP
    Jedi-Meister
    0 x
    496 Beiträge
    1 Hilfreiche Beiträge
    19. 08. 2012, 23:14

    OK, vielen Dank für die ausführlichen Erklärungen.

    Die HAVING-Klausel wird leider nicht direkt unterstützt, aber Du könntest versuchen, sie mittels stdWrap in groupBy zu injizieren:

    1. groupBy.data = GP:cnt
    2. groupBy.wrap = title HAVING count(*) = |

    VG,
    LuP

  • xlarge74 xlarge74
    Padawan
    0 x
    40 Beiträge
    0 Hilfreiche Beiträge
    19. 08. 2012, 23:47

    Liebe/Lieber LuP !

    DANKE vielmals ... es funktioniert ;-)

    lg
    XL

  • 1