[TYPO3-german] Vielleicht sieht ja jemand meinen Logikfehler im SQL Aufruf ???

bernd wilke t3ng at bernd-wilke.net
Fri Feb 1 08:41:53 CET 2013


Am 01.02.2013 00:31, schrieb Ralf-Rene Schröder:
> Hallo...
> irgendwie sehe ich den Wald vor lauter Bäumen nicht...
> ich muß da irgendeinen blöden logischen Fehler machen.
>
> ich habe datensätze (item) die per MM Tabelle mehreren Kategorien (cat)
> zugeordnet sind
> (die wiederum sind untereinander duch eine Kommaseparierte Liste
> verbunden - vereinfacht hier nur als register, denn die stimmen)...
>
> nun will ich hier die Datensätze zählen die sowohl cat als auch
> parentcat zugeordnet sind...
> jedes der beiden Elemente (100/110) zählt für sich richtig
> bei parentcat alleine gibt es 4 - bei cat alleine 12 Ergebnisse
> (schon richtig, weil diese cat auch in anderen parents eingebunden sind)
> beides zusammen sollten bei meinen testfall 3 ergeben (sind aber hier 0)
>
> item-count.cObject = TEXT
> item-count.cObject.numRows.table = tx_ext_item
> item-count.cObject.numRows.select {
>    join = tx_ext_item_cat_mm ON ( tx_ext_item_cat_mm.uid_local =
> tx_ext_item.uid )
>    pidInList = 688
>    andWhere.cObject = COA
>    andWhere.cObject {
>      100 = TEXT
>      100.value = tx_ext_item_cat_mm.uid_foreign = {register:cat}
>      100.insertData = 1
>      100.noTrimWrap = |||
>      110 = TEXT
>      110.value = tx_ext_item_cat_mm.uid_foreign = {register:parentcat}
>      110.insertData = 1
>      110.noTrimWrap = | AND ||
>    }
> }
>
> jemand eine Idee wo mein Denkfehler ist ???
>

bau dir doch mal ein SQL-Query als Beispiel auf und schmeiss das ins 
phpmyadmin.


bzw. lass dir mal hier dein Query ausgeben. irgendwo sollte da drin dann 
so etwas wie

tx_ext_item_cat_mm.uid_foreign = 1 AND // cat
tx_ext_item_cat_mm.uid_foreign = 2     // parentcat

stehen. Das kann natürlich nie erfüllt werden, da ein Feld nicht 
gleichzeitig zwei verschiedene Werte annehmen kann.

eigentlich musst du ein mit deiner mm-tabell ein join auf sich selber 
machen. damit so etwas geht musst du mit alias arbeiten

SELECT uid,count(*)
FROM tx_ext_item_cat_mm
JOIN tx_ext_item_cat_mm AS mm2 ON tx_ext_item_cat_mm.uid = mm2.uid
WHERE tx_ext_item_cat_mm.uid_foreign = 'cat'
AND mm2.uid_foreign = 'parentcat'

ob du dann noch die Ursprungstabelle joinst um direkt weitere Felder 
(titel, ...) zu bekommen steht dir frei.

bernd
-- 
http://www.pi-phi.de/cheatsheet.html


More information about the TYPO3-german mailing list