TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

Komma Werte in select where Abfrage?


Autor Nachricht
Verfasst am: 02. 07. 2010 [00:43]
Robman
Themenersteller
Dabei seit: 29.03.2010
Beiträge: 13
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.
TYPOSCRIPT
temp.split = CONTENT
temp.split {
  table = daten
  select {
    pidInList = 10
  }
  renderObj = COA
  renderObj {
    stdWrap.outerWrap = |,
    10 = TEXT
    10.field = kommawerte
    10.wrap = |
  }
}
# Ausgabe ist dann: 1,2, (bei noch mehr id's: 1,2,3,4,5 usw.)
 
# Und nun die zweite Abfrage
temp.machdoch = CONTENT
temp.machdoch {
  table = id_vergleich
  select {
    pidInList = 20
    # Um diese Bedingung geht es!!!
    where = tt_products_distributor.uid',' = temp.split
    # Der where-Klausel soll:
    # 1, = 1, oder 2, = 2, abgleichen
    # nur wie ?
  }
  renderObj = COA
  renderObj {
    # usw...
  }


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...

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 02.07.2010 um 00:56.]

ProfilWWW
Verfasst am: 04. 07. 2010 [07:37]
Robman
Themenersteller
Dabei seit: 29.03.2010
Beiträge: 13
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.

TYPOSCRIPT
temp.achmann = CONTENT
temp.achmann {
	table = tt_products
	select {
		pidInList = 1,2,3
		join = tt_products_distributor ON (tt_products.distributor_uid = tt_products_distributor.uid)
		# where.dataWrap = (temp.split.eins = temp.split.zwei)
		where.dataWrap = (temp.split.eins = '###2###')
		# andwhere.noTrimWrap = (temp.split.eins = temp.mach)
		# andwhere.noTrimWrap = (temp.split.eins = '###2####')
		andWhere {
			data = GPvar:tt_products|product
      wrap = tt_products.uid = |
    }
	}
# 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 icon_frown.gif

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

ProfilWWW
Verfasst am: 08. 07. 2010 [12:46]
Robman
Themenersteller
Dabei seit: 29.03.2010
Beiträge: 13
Ich erstell mal die Lösungsantwort zu meinem Ego-Chat hier icon_razz.gif ...

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. icon_wink.gif

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

ProfilWWW