phpbar.de logo

Mailinglisten-Archive

Select-Ergebnisse

Select-Ergebnisse

Benedikt Quirmbach benedikt at quirmbach.de
Don Feb 17 15:55:01 CET 2005


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?

BTW:
"... WHERE NOW()-datum<1000000" ist - glaube ich - nicht ganz richtig. 
Es sollen die letzten 10 Tage sein. Wie heißt das richtig?

Benedikt

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive