MySQL View liefert mehr Ergebnisse mit einem AND?

8

Wenn ich das tue:

%Vor%

Macht Sinn. Und dann mache ich das ...

%Vor%

Whaaaaat ?? MEHR Ergebnisse ??

Also musste ich die Ansicht als Subselect einbinden, damit sie das zurücklief, was ich erwartet hatte. So:

%Vor%

Kann jemand das erklären? Ich musste das nie in MS SQLSERVER machen - das ist mir fremd.

Das SQL, das zum Erstellen dieser Ansicht verwendet wird, verbindet tatsächlich mehrere andere Ansichten. Ich bin mir nicht ganz sicher, ob es hilfreich ist zu sehen, aber du hast danach gefragt :) Es ist im Grunde

%Vor%

Und die vw_employee_current_appointment_info, die 'division' und 'udds' enthält, sieht so aus:

%Vor%     
bmherold 08.12.2011, 21:38
quelle

2 Antworten

1

Sie haben den linken Join in Ihren Tabellen verwendet. Wenn die Join-Bedingung wahr ist, wurden Datensätze ausgewählt, die in allen Tabellen übereinstimmen, als Datensätze nacheinander aus den linken Tabellen abrufen. In diesem Fall ist Ihre Nullbedingung wahr und wiederholt die Ergebnislistenansicht

    
Pradeep Sharma 15.12.2011 13:13
quelle
-1

Sie verwenden linke Joins, damit Ihre Basistabelle mit den nachfolgenden Tabellen verbunden wird, selbst wenn kein Wert vorhanden ist. Wenn Sie jedoch beginnen, die nachfolgenden Tabellen zu filtern, geben Sie an, dass die nachfolgende Tabelle bestimmte Werte enthält. In diesem Fall gibt es wahrscheinlich nur 319 Werte in der "vw_employee_current_appointment_info" mit einem Null im Divisionsfeld. Wenn Sie das Feld udds hinzufügen, kann es mehr Felder geben, die null sind, da der linke Join das Unterteilungsfeld per Definition NULL ist Daher ist die Anzahl der Verbindungen, bei denen "vw_employee_current_appointment_info" als NULL udds hat, größer als die Anzahl der Datensätze, bei denen die Division NULL ist, sodass sie alle zurückbringt. Wenn Sie dies mit gleichen Joins versuchen, wird die Zahl 319 maximal sein.

    
Jay Pyatt 12.12.2011 20:12
quelle

Tags und Links