Mailinglisten-Archive |
Hallo Benedikt Am Thu, 17 Feb 2005 15:55:01 +0100 schrieb Benedikt Quirmbach <benedikt at quirmbach.de>: > Hallo, > > mit einer Select-Abfrage durchsuche ich mehrere Tabellen gleichzeitig: > > (SELECT name AS text_1, width AS text_2, '0' AS text_3, datum, aktiv, > 'Anzeigentyp' AS 'table' FROM typ WHERE NOW()-datum<1000000) UNION ALL > (SELECT text AS text_1, '0' AS text_2, '0' AS text_3, datum, aktiv, > 'Headline' AS 'table' FROM headlines WHERE NOW()-datum<1000000) UNION > ALL (SELECT text_1 AS text_1, text_2 AS text_2, text_3 AS text_3, > datum, aktiv, 'Textbausteine' AS 'table' FROM texte WHERE > NOW()-datum<1000000) UNION ALL (SELECT line AS text_1, '0' AS text_2, > '0' AS text_3, datum, aktiv, 'Hotline' AS 'table' FROM hotline WHERE > NOW()-datum<1000000) UNION ALL (SELECT text AS text_1, '0' AS text_2, > '0' AS text_3, datum, aktiv, 'Internet' AS 'table' FROM internet WHERE > NOW()-datum<1000000) UNION ALL (SELECT text_1 AS text_1, text_2 AS > text_2, text_3 AS text_3, datum, aktiv, 'Aktionstexte' AS 'table' FROM > aktion WHERE NOW()-datum<1000000) UNION ALL (SELECT name AS text_1, '0' > AS text_2, '0' AS text_3, datum, aktiv, 'Bild' AS 'table' FROM bild > WHERE NOW()-datum<1000000) ORDER BY datum desc, aktiv desc > > Es sollen also in diesen Tabellen alle Einträge gefunden werden, die > sich in letzter Zeit geändert haben. Da diese Tabellen unterschiedliche > Felder und Feldlängen haben, habe ich eine "Quasi"-Tabelle in der > Abfrage aufgebaut: "name AS text_1, width AS text_2, '0' AS text_3". > Dabei werden alle Felder, in denen kein Ergebnis zu erwarten ist auf > "0" gesetzt. > > Die Abfrage tut das, was sie soll, aber ... > > .... die Feldlängen in der Ergebnistabelle werden von der Länge des > ersten gefundenen Eintrages bestimmt. Ist also z.B. der erste gefundene > Text_1 ein String mit 3 Zeichen, haben alle folgenden Text_1 auch nur 3 > Zeichen. In Wirklichkeit ist das aber natürlich nicht so, sondern die > Ergebnisse werden einfach abgeschnitten. > > Was kann ich da tun? Wenn Dich die Leerzeichen nicht stören kannst Du RPAD(name, $GrößteLänge, ' ') AS text_1 probieren. > > BTW: > "... WHERE NOW()-datum<1000000" ist - glaube ich - nicht ganz richtig. > Es sollen die letzten 10 Tage sein. Wie heißt das richtig? WHERE SUBDATE(CURRENT_DATE, INTERVAL 10 DAY) <= datum > > Benedikt > Robert Pleniger -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive