#1 8. August 2010 Mehrsprachige Inhalte aus Datenbank auslesen moin. ich hab derzeit ein problem mit einem query. es handelt sich um ein script, welches inhalte (news) aus einer db auslesen soll. das problem: diese inhalte sollen übersetzen werden können. d.h. der query muss folgendes ergebnis liefern: jeden eintrag in der benutzersprache und falls nicht vorhanden originaleintrag. folgendes hab ich versucht: Code: SELECT SQL_CALC_FOUND_ROWS n.`id` newsID, n.`title`, n.`content`, n.`datetime`, n.`userID`, u.`name` userName FROM `news` n LEFT JOIN `users` u ON ( n.`userID` = u.`id` ) WHERE n.`id` IN ( ( SELECT n2.`id` FROM `news` n2 WHERE n2.`langID` = {LANG_ID} -- <- die benutzersprache && n2.`translateID` != 0 ) ) || n.`translateID` = 0 -- <- da sitzt der fehler (denk ich) ORDER BY n.`datetime` DESC, n.`id` DESC LIMIT 0, 30 aber leider liefert der query jetzt alle einträge + übersetzung (falls vorhanden) jemand ne idee das komfortabel mit einem query zu lösen? zur struktur: - news.langID = die sprach-id (sollte klar sein) - news.translateID = die id des original-eintrags. 0 wenn der eintrag ein original ist, !0 wenn es eine übersetzung ist. ---- ich denk das ganze wird ein wenig aufwendiger als ich dachte, die sortierung stimmt ja auch nicht mehr. klar könnte ich einfach alle originalen fetchen und dann jeweils prüfen ob ne übersetzung vorhanden ist, aber das sind mir zu viele querys. ich grübel noch ein wenig ^^ ps: berwertungen gehen an jeden hilfreichen beitrag raus (falls das jemanden ans t) ---- habs nun so gelöst: zuerst hol ich alle originalen news (ORDER stimmt wieder) und speicher die ids in ein array. anschließend hol ich mit einem zweiten query alle passenden übersetzungen und überschreib den originalen inhalt. funzt einwandfrei mit nur 2 querys ich lass mal offen falls jemand eine bessere lösung kennt. + Multi-Zitat Zitieren
#2 10. August 2010 AW: Mehrsprachige Inhalte aus Datenbank auslesen Code: SELECT news.id, IF(n2.title=NULL,news.title,n2.title) AS title, IF(n2.content=NULL,news.content,n2.content) AS content, news.datetime, news.userID, users.name AS userName FROM news LEFT JOIN users ON (users.id = news.userID) LEFT JOIN news AS n2 ON (n2.translateID=news.id AND n2.langID={LANG_ID}) -- <- die benutzersprache WHERE news.translateID=0 ORDER BY news.datetime DESC, news.id DESC Ich kann dir allerdings nicht sagen, welche der Lösungen performanter ist + Multi-Zitat Zitieren