Hey Leute,
ich brauche mal eure Hilfe. Irgendwie sehe ich gerade den Wald vor lauter Bäumen nicht mehr.
Folgendes Szenario:
Ich habe eine ganz normale TYPO3 7 Instanz, mit sagen wir, 2 Seiten (Über uns & Leistungen).
Des Weiteren habe ich 3 System-Kategorien. In diesem Beispiel "Kategorie1, Kategorie2, Kategorie3".
Die Seite "Über Uns" hat die Kategorien "Kategorie1 und Kategorie2" zugeteilt bekommen.
Die Seite "Leistungen" hat die Kategorien "Kategorie2 und Kategorie3" zugeteilt bekommen.
Nun brauche ich einen SELECT im TypoScript, der mir alle Seiten ausliest, welche sowohl die Kategorie 2, als auch die Kategorie3 zugeordnet bekommen hat. (In diesem Fall müsste die Seite "Leistungen" die gewünschte Ausgabe sein.)
Bevor wir das in TypoScript machen, denke ich mir, ist es in einfachen SQL besser..
Folgende 3 Tabellen existieren ja hierfür in TYPO3:
"pages", "sys_category", "sys_category_record_mm"
pages - table:
+-----+----------+------------+
| uid | title | categories |
+-----+----------+------------+
| 3 | About us | 2 |
| 4 | Services | 2 |
+-----+----------+------------+
sys_category - table:
+-----+-------+
| uid | title |
+-----+-------+
| 1 | Kategorie1 |
| 2 | Kategorie2 |
| 3 | Kategorie3 |
+-----+-------+
sys_category_record_mm - table:
+-----------+-------------+------------+
| uid_local | uid_foreign | tablenames |
+-----------+-------------+------------+
| 2 | 4 | pages |
| 2 | 3 | pages |
| 1 | 4 | pages |
| 3 | 3 | pages |
+-----------+-------------+------------+
Nun habe ich hier eine einfache SQL - Abfrage, welche mit alle Seiten ausgibt, die eine Kategorie haben.
SELECT DISTINCT title FROM pages
JOIN sys_category_record_mm ON sys_category_record_mm.uid_foreign = pages.uid
WHERE sys_category_record_mm.tablenames = 'pages'
Diese SQL - Abfrage liefert mir nun bei den 3 Tabellen folgende Ausgabe:
+----------+
| title |
+----------+
| Leistungen|
| Über Uns |
+----------+
Allerdings brauche ich nur die Seite "Leistungen". Halt die Seite, welche sowohl Kategorie2, als auch Kategorie3 zugeordnet ist.
Ich habe an etwas ähnlichem wie folgt gedacht, allerdings weiß ich auch, dass das nicht funktionieren kann, da ich weiterhin beide Einträge bekomme, da ich hier eine OR-Condition habe...
SELECT DISTINCT title FROM pages
JOIN sys_category_record_mm ON sys_category_record_mm.uid_foreign = pages.uid
WHERE sys_category_record_mm.tablenames = 'pages' AND (sys_category_record_mm.uid_local = 2 OR sys_category_record_mm.uid_local = 3)
Hat jemand von euch eine Idee, wie ich das am Besten lösen kann?
Bin für jeden Tipp dankbar!!
Viele Grüße!