@alzaimar: Dein Fall 1 ist genau das was ich suche
Damit mir sowas auch mal spontan einfällt habe ich mir erstmal ein
SQL Buch bestellt
Auf die Abfrage wäre ich wohl so nie gekommen.
Ich brauche immer alle Teams, da ich in einem Report alle geschlossen den geöffneten Issues pro Team gegenüberstellen will.
Wenn ich eine weitere Tabelle joine, muss ich dann Felder darin dann auch auf NULL abfragen? Ich glaube nicht, oder? Sorry, wenn das eine "komische" Frage ist. Für mich ist das aber schon ein recht komplexes
SQL Querry.
SQL-Code:
set transaction isolation level read uncommitted;
select t.name as TeamName,
coalesce (
(select count (distinct i.issueID)
from tb_issues i
join tb_users u on i.fk_userID = u.userID
join tb_history h on h.fk_issueid = i.issueid
where u.fk_teamID = t.teamID
and ((i.visibility = 1) or i.visibility is null) <== Auf NULL prüfen?
and ((h.action = 1) or h.action is null)
and ((i.FK_IssueStatusID = 5) or i.FK_IssueStatusID is null)
and ((h.ChangeDate >= '03.03.2008 00:00:00' /* -1 */ and h.ChangeDate < '09.03.2008 00:00:00')
or (h.ChangeDate is null))
),0) as Anzahl
from tb_teams t
order by t.name
Das ich während des Joins schon die Datenmenge einschränken kann wusste ich auch noch nicht, hier lernt man doch immer viel dazu
Die verschiedenen Join Varianten hatte ich in meinem ursprünlichen
Query fast alle durchprobiert. Der Full oder left join brachten da das selbe Ergebnis.