Hallo,
hab hier folgende MySQL-Zeile:
"Trotz" (?) DISTINCT wird jede Zeile, die die WHERE-Kriterien erfüllt, drei mal ausgegeben. Woran liegt das grob gesagt und wie lässt sich das beheben (in PHP filtern fällt natürlich weg, soll schon in SQL selber geregelt werden )? Muss ich hier gruppieren (GROUP BY) oder mit JOIN ran...?
(Dass ich in der WHERE-Klausel nicht "grundrissprofi_uploads.zeitpunkt_bearbeitung < DATE_SUB( NOW(), INTERVAL 90 MINUTE" durch das Alias "liegengeblieben" ersetzen und dann boolisch auf 0 oder 1 abfragen kann, kommt noch hinzu, jedenfalls lässt er mir das nicht durchgehen, dass ich das Alias in der Bedingung verwende.)
Gruß Maik
hab hier folgende MySQL-Zeile:
$sql = "SELECT
DISTINCT grundrissprofi_uploads.id as 'posten_id', grundrissprofi_uploads.postennummer as 'postennummer', grundrissprofi_kunden.username as 'username', grundrissprofi_kunden.strasse as 'strasse', grundrissprofi_kunden.hausnummer as 'hausnummer', grundrissprofi_kunden.plz as 'plz', grundrissprofi_kunden.ort as 'ort', grundrissprofi_uploads.user, grundrissprofi_uploads.vorlage_dateiname as 'vorlage_dateiname', grundrissprofi_uploads.infos as 'infos', grundrissprofi_uploads.qualitaet as 'qualitaet', grundrissprofi_uploads.druckanzahl as 'druckanzahl', grundrissprofi_uploads.download_dateiname as 'download_dateiname', grundrissprofi_uploads.zeitpunkt_upload as 'zeitpunkt_upload', grundrissprofi_uploads.zeitpunkt_bestellung as 'zeitpunkt_bestellung', grundrissprofi_uploads.zeitpunkt_bearbeitung as 'zeitpunkt_bearbeitung', grundrissprofi_uploads.druck as 'druck', grundrissprofi_uploads.flag_grundriss_in_bearbeitung as 'flag_grundriss_in_bearbeitung', grundrissprofi_uploads.download_bearbeiter_id as 'download_bearbeiter_id', grundrissprofi_uploads.zeitpunkt_bearbeitung < DATE_SUB( NOW(), INTERVAL 90 MINUTE) as 'liegengeblieben', grundrissprofi_kunden.name as 'name', grundrissprofi_kunden.vorname as 'vorname', grundrissprofi_kunden.id, grundrissprofi_bearbeiter.username as 'bearbeiter_username', grundrissprofi_bearbeiter.vorname as 'bearbeiter_vorname', grundrissprofi_bearbeiter.name as 'bearbeiter_name'
FROM grundrissprofi_uploads, grundrissprofi_kunden, grundrissprofi_bearbeiter
WHERE (grundrissprofi_kunden.id=grundrissprofi_uploads.user) AND (druck<>'1') AND (grundrissprofi_uploads.flag_bestellung_schon_losgeschickt='1') AND (grundrissprofi_uploads.flag_grundriss_schon_bearbeitet='0' OR grundrissprofi_uploads.flag_moeblierung_schon_bearbeitet='0') AND ((grundrissprofi_uploads.flag_grundriss_in_bearbeitung='0') OR (grundrissprofi_uploads.zeitpunkt_bearbeitung > DATE_SUB( NOW(), INTERVAL 90 MINUTE)) OR (grundrissprofi_uploads.zeitpunkt_bearbeitung < DATE_SUB( NOW(), INTERVAL 90 MINUTE) AND grundrissprofi_uploads.download_bearbeiter_id=grundrissprofi_bearbeiter.id) )
ORDER BY grundrissprofi_uploads.zeitpunkt_upload DESC";
DISTINCT grundrissprofi_uploads.id as 'posten_id', grundrissprofi_uploads.postennummer as 'postennummer', grundrissprofi_kunden.username as 'username', grundrissprofi_kunden.strasse as 'strasse', grundrissprofi_kunden.hausnummer as 'hausnummer', grundrissprofi_kunden.plz as 'plz', grundrissprofi_kunden.ort as 'ort', grundrissprofi_uploads.user, grundrissprofi_uploads.vorlage_dateiname as 'vorlage_dateiname', grundrissprofi_uploads.infos as 'infos', grundrissprofi_uploads.qualitaet as 'qualitaet', grundrissprofi_uploads.druckanzahl as 'druckanzahl', grundrissprofi_uploads.download_dateiname as 'download_dateiname', grundrissprofi_uploads.zeitpunkt_upload as 'zeitpunkt_upload', grundrissprofi_uploads.zeitpunkt_bestellung as 'zeitpunkt_bestellung', grundrissprofi_uploads.zeitpunkt_bearbeitung as 'zeitpunkt_bearbeitung', grundrissprofi_uploads.druck as 'druck', grundrissprofi_uploads.flag_grundriss_in_bearbeitung as 'flag_grundriss_in_bearbeitung', grundrissprofi_uploads.download_bearbeiter_id as 'download_bearbeiter_id', grundrissprofi_uploads.zeitpunkt_bearbeitung < DATE_SUB( NOW(), INTERVAL 90 MINUTE) as 'liegengeblieben', grundrissprofi_kunden.name as 'name', grundrissprofi_kunden.vorname as 'vorname', grundrissprofi_kunden.id, grundrissprofi_bearbeiter.username as 'bearbeiter_username', grundrissprofi_bearbeiter.vorname as 'bearbeiter_vorname', grundrissprofi_bearbeiter.name as 'bearbeiter_name'
FROM grundrissprofi_uploads, grundrissprofi_kunden, grundrissprofi_bearbeiter
WHERE (grundrissprofi_kunden.id=grundrissprofi_uploads.user) AND (druck<>'1') AND (grundrissprofi_uploads.flag_bestellung_schon_losgeschickt='1') AND (grundrissprofi_uploads.flag_grundriss_schon_bearbeitet='0' OR grundrissprofi_uploads.flag_moeblierung_schon_bearbeitet='0') AND ((grundrissprofi_uploads.flag_grundriss_in_bearbeitung='0') OR (grundrissprofi_uploads.zeitpunkt_bearbeitung > DATE_SUB( NOW(), INTERVAL 90 MINUTE)) OR (grundrissprofi_uploads.zeitpunkt_bearbeitung < DATE_SUB( NOW(), INTERVAL 90 MINUTE) AND grundrissprofi_uploads.download_bearbeiter_id=grundrissprofi_bearbeiter.id) )
ORDER BY grundrissprofi_uploads.zeitpunkt_upload DESC";
(Dass ich in der WHERE-Klausel nicht "grundrissprofi_uploads.zeitpunkt_bearbeitung < DATE_SUB( NOW(), INTERVAL 90 MINUTE" durch das Alias "liegengeblieben" ersetzen und dann boolisch auf 0 oder 1 abfragen kann, kommt noch hinzu, jedenfalls lässt er mir das nicht durchgehen, dass ich das Alias in der Bedingung verwende.)
Gruß Maik
Kommentar