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

Jetzt testen!

Schulungen

Datenbankabfrage im Zusammenspiel mit uidInList und pidInList


Autor Nachricht
Verfasst am: 03. 06. 2009 [17:05]
mark13
Themenersteller
Dabei seit: 27.02.2009
Beiträge: 18
Hallo zusammen,

anscheinend scheint mein derzeitiges Verständnisproblem ein häufige vorkommendes zu sein.

Ausgangspunkt:
Ich möchte den Inhalt eines DB Feldes dynamisch abfragen.
In meinem Fall wird die uid im Backend vom Redakteur gepflegt (link-Feld)
Ich möchte Inhalte der Zielseite über diese uid abfragen.
Im Prinzip einfach.
über:
TYPOSCRIPT
andWhere.field = field_link
andWhere.intval = 1
andWhere.wrap = uid= |
selectFields = db_feld


geht aber (so) nicht.
die sql-debug Ausgabe verrät:
TYPOSCRIPT
SELECT name
FROM pages
WHERE
pages.pid IN (5) AND uid=757

die (automatisch) hinzugefügte pid ist in diesem Fall falsch, die Zielseite hat die pid 12.
Also pid dynamisch auslesen oder ganz löschen

nun das Verständnisproblem:
egal welche Kombination von uidInList, pidInList oder andWhere,
die select Abfrage ist nicht wie gewünscht zusammengesetzt:

hier die getesteten Bsps:
TYPOSCRIPT
1-------------------------------------
table = pages
select {
	uidInList = 757
	selectFields = name
}
ergibt:
SELECT name
FROM pages
WHERE
pages.uid=757 AND pages.pid IN (5)
2-------------------------------------
table = pages
select {
	uidInList = 757
	pidInList = 0
	selectFields = name
}
SELECT name
FROM pages
WHERE
pages.uid=757
3----------------------------
table = pages
select {
	pidInList = 0
	andWhere.field = field_link
	andWhere.intval = 1
	andWhere.wrap = uid= |
	selectFields = name
}
SELECT name
FROM pages
WHERE
pages.uid=0 AND uid=757
4---------------------------------
table = pages
select {
	pidInList.field = field_link
	selectFields = name
}
SELECT name
FROM pages
WHERE
pages.pid IN (757)


Wenn ich uidInList den Value von field_link übergeben kann, wäre Bsp.2 meine Lösung.

Nun die Fragen:
WO sind die grundlegenden Unterschiede bei anwendung und Funktion von uidInList und pidInList?
Kann ich uidInList Parameter zuweisen, wie es auch bei pidInList geht?(uidInList.field = ...)
Oder geht nur die statische Zuweisung uidInList = 5 ?

Warum hat die Anweisung pidInList = 0 im Zusammenspiel mit uidInLsit oder andWhere verschiedene Auswirkungen?
im Bsp 2 verschwindet die pages.pid IN , in Bsp 3 taucht dafür pages.uid=0 auf?

Grüße und Danke im Voraus

Profil
Verfasst am: 03. 06. 2009 [17:17]
just2b
TYPO3-Gott
Moderator
Dabei seit: 04.08.2004
Beiträge: 19047
Hallo,

erstens: warum erstellst du einen neuen post wenns schon http://www.typo3.net/index.php?id=13&action=list_post&tid=90172 gibt?

eigentlichd achte ich auch dass man das eine ODER das andere verwenden muss, aber gerade geschaut, pidInList ist Pflicht!

wenn du allerdings einen datensatz anhand der ID auslesen willst, empfiehtl es sich, das cObj RECORDS zu verwenden

lg georg

=> TYPO3 - inspiring people to share <= aber kein Support per PM!

=> in eigener Sache: · inspiring people to share your location Trag dich in die TYPO3 Weltkarte ein und zeige wie groß die TYPO3 Community ist - vielen Dank!<=
ProfilWWW
Verfasst am: 03. 06. 2009 [17:24]
mark13
Themenersteller
Dabei seit: 27.02.2009
Beiträge: 18
Hi,

Danke für die Antwort und sorry wegen dem doppelten Posting.

Aber nochmal nachgefragt,
wenn pidInList Pflicht ist, dann würde ich pidInIst=0 setzen?
wie beschreiben hat dies aber unterschiedliche Auswirkungen:
Bsp2:
Verwende ich uidInList und pidInList entfällt die pid abfrage im erzeugten SQL
Bsp3:
mit andwhere erscheint jetzt pages.uid=0 zusätzlich

und kann ich uidInList über Parameter dynamisch zuweisen?
Profil
Verfasst am: 03. 06. 2009 [17:53]
just2b
TYPO3-Gott
Moderator
Dabei seit: 04.08.2004
Beiträge: 19047
uidInList hat noch kein stdWrap, wird wohl mit 4.3 kommen

lg georg

=> TYPO3 - inspiring people to share <= aber kein Support per PM!

=> in eigener Sache: · inspiring people to share your location Trag dich in die TYPO3 Weltkarte ein und zeige wie groß die TYPO3 Community ist - vielen Dank!<=
ProfilWWW