Es ist irgendwas anders als in meinem Versuch. Ich kann nicht hellsehen und ein nachvollziehbares Beispiel hast du nicht veröffentlicht. Mach eine Kopie der Tabelle. Lösch alle Datensätze bis auf 2 oder drei signifikante (ungefähr analog zu meinem Versuch). Auch alle Spalten, die nicht weiter für das Problem relevant sind, kannst du löschen. Teste dann, ob der Fehler noch vorhanden ist. Poste in dem Fall die CREATE-, INSERT- und SELECT-Statements, so dass man sie nur noch kopiern muss, um den Fall nachzustellen.
Hi dedlfix,
ich habe es geschafft, nachvollziehbaren Code zu generieren, der mein Problem transparent machen dürfte:
CREATE TEMPORARY TABLE `tmp` (
`ID` INT( 2 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Monat` VARCHAR( 10 ) NOT NULL
) ENGINE = MYISAM ;
INSERT INTO `tmp` (`ID`, `Monat`) VALUES
(1, '2010|10'),
(2, '2010|09'),
(3, '2010|08'),
(4, '2010|07'),
(5, '2010|06');
CREATE TEMPORARY TABLE meinetabelle (
ID int(10),
Unixstamp varchar (10) NOT NULL,
`loesch` INT( 1 ) NOT NULL ,
`Status` VARCHAR( 10 ) NOT NULL
);
INSERT INTO meinetabelle VALUES
(1, UNIX_TIMESTAMP(NOW()),'0','qq'),
(2, UNIX_TIMESTAMP(NOW() - INTERVAL 1 MONTH),'0','qq'),
(3, UNIX_TIMESTAMP(NOW() - INTERVAL 1 MONTH),'0','qq'),
(4, UNIX_TIMESTAMP(NOW() - INTERVAL 3 MONTH),'0','qq');
SELECT *, FROM_UNIXTIME(m.Unixstamp, '%Y|%m')
FROM tmp t
LEFT JOIN meinetabelle m ON t.Monat = FROM_UNIXTIME(m.Unixstamp, '%Y|%m')
WHERE
loesch != 1 AND
Status = 'xx'
GROUP BY t.Monat DESC;
Als Ergebnismenge erhältst Du ein leeres Resultat.
Aber wir wollten ja über unseren LEFT JOIN auf jeden Fall die Monate haben, auch wenn in diesem Monat kein Eintrag vorliegt.
Gruß, Frank