Komma Werte in select where Abfrage?

  • Robman Robman
    T3PO
    0 x
    13 Beiträge
    0 Hilfreiche Beiträge
    02. 07. 2010, 00:43

    Hallo Forum!

    ich habe zu meinem Problem schon ein Thema erstellt. Aber das sieht evtl. zu kompliziert aus und bezieht sich auf tt_products... http://www.typo3.net/forum/list/list_post//99696/ Hier noch einmal eine abgespeckte Version.

    Ich habe in einem Datenbankfeld zwei id's gespeichert, die durch Komma getrennt sind. Das sieht so aus: 1,2

    Diese Zwei will ich "lesbar" machen, um diese für die nächste where Abfrage zu nutzen.

    1. temp.split = CONTENT
    2. temp.split {
    3. table = daten
    4. pidInList = 10
    5. }
    6. renderObj = COA
    7. renderObj {
    8. 10 = TEXT
    9. 10.field = kommawerte
    10. 10.wrap = |
    11. }
    12. }
    13. # Ausgabe ist dann: 1,2, (bei noch mehr id's: 1,2,3,4,5 usw.)
    14.  
    15. # Und nun die zweite Abfrage
    16. temp.machdoch = CONTENT
    17. temp.machdoch {
    18. table = id_vergleich
    19. pidInList = 20
    20. # Um diese Bedingung geht es!!!
    21. where = tt_products_distributor.uid',' = temp.split
    22. # Der where-Klausel soll:
    23. # 1, = 1, oder 2, = 2, abgleichen
    24. # nur wie ?
    25. }
    26. renderObj = COA
    27. renderObj {
    28. # usw...
    29. }

    Hat jemand eine Ahnung wie ich das anstellen kann?

    Beste Grüße,
    Robman

    # Nachtrag
    Ich hab eben etwas ähnliches gefunden: "Verschachtelte SQL Abfragen" http://www.typo3.net/forum/list/list_post//96144/

    Aber dort kommen keine Komma separierten Werte drin vor...


  • 1
  • Robman Robman
    T3PO
    0 x
    13 Beiträge
    0 Hilfreiche Beiträge
    04. 07. 2010, 07:37

    Ich bin schon etwas weiter... Aber immer noch keine Lösung. Ich glaube, es liegt an der Syntax der where-Bedingung. Die Werte aus dem "temp.split." werden wohl nicht referenziert.

    1. temp.achmann = CONTENT
    2. temp.achmann {
    3. table = tt_products
    4. pidInList = 1,2,3
    5. join = tt_products_distributor ON (tt_products.distributor_uid = tt_products_distributor.uid)
    6. # where.dataWrap = (temp.split.eins = temp.split.zwei)
    7. where.dataWrap = (temp.split.eins = '###2###')
    8. # andwhere.noTrimWrap = (temp.split.eins = temp.mach)
    9. # andwhere.noTrimWrap = (temp.split.eins = '###2####')
    10. andWhere {
    11. data = GPvar:tt_products|product
    12. wrap = tt_products.uid = |
    13. }
    14. }
    15. # usw...

    Die Daten aus dem table join sind aus beiden Tabellen abrufbar. Nur die where Klausel klappt nicht.
    Alle Versuche eine funktionierende where oder andWhere Bedingung mit den temp.split. zu setzen sind gescheitert

    temp.split.eins - erstellt ein array aus: 1 = ###1####
    oder
    temp.split.eins - erstellt ein array aus: 1,2 = ###1######2###
    oder
    temp.split.eins - erstellt ein array aus: 1,2,3 = ###1######2######3###

    temp.split.zwei - erstellt ein array aus allem was da ist
    1,2,3,4,5 usw. = ###1######2######3######4######5### usw.

    Diese lassen sich aber nicht vergleichen. Warum nur??? Ich dachte aus:

    where
    temp.split.eins = ###1######2###
    gleich
    temp.split.zwei = ###1######2######3######4######5###
    resultiert
    ###1### = ###1###
    ###2### = ###2###
    oder
    ###1######2### = ###1######2###

    Pustekuchen! Liegt es "NUR" an der Syntax? Oder mach ich einen kompletten Denkfehler???

    Gruß,
    Robman

  • Robman Robman
    T3PO
    0 x
    13 Beiträge
    0 Hilfreiche Beiträge
    08. 07. 2010, 12:46

    Ich erstell mal die Lösungsantwort zu meinem Ego-Chat hier ...

    Ich hab all das where, split zeugs mal rausgeschmissen und die Sache einfach über eine Zuordnungstabelle (_mm) gemacht. Klappt wunderbar, und die Kopfschmerzen sind auch weg.

    Falls aber nochmal jemand vorbeigucken sollte der sich mit 1,2,3 split arrays und das vergleichen der werte in einem join oder in einer where abfrage auskennt würde ich mich freuen.

    Gruß, Robman

  • 1