Ich versuche, eine Abfrage zu schreiben, die die Aufzeichnungen über die Einrichtungen sowie die dazugehörigen Daten aus der Zuordnungstabelle holen werden. Meine Frage ist, wie:wie keine Nullwerte zu erhalten, während mysql Abfrage
select e.Name,ec.Name as EquipmentClassName, s.Name as SiteName
from equipment e
left join site s on (e.SiteID = s.ID or e.SiteID is NULL and s.ID is NULL)
left join equipmentclass ec on e.EquipmentClassID=ec.ID
where e.id like '%' and (
(isNull(e.Name) OR e.Name= CASE WHEN COALESCE('','') = '' THEN e.Name ELSE '' END)
and (isNull(e.EquipmentClassID) OR e.EquipmentClassID= CASE WHEN COALESCE('1','') = '' THEN e.EquipmentClassID ELSE '' END)
and (isNull(e.SiteID) OR e.SiteID= CASE WHEN COALESCE('','') = '' THEN e.SiteID ELSE '' END)
)
ok, wenn ich übergeben keinen Parameter in der Klausel, wo bekomme ich alle Datensätze auch null Datensätze enthält. Aber wenn ich einen der Parameter übergeben, bekomme ich alle Datensätze wieder. Was ich hier erwarte, sind gefilterte Daten.
Angenommen, ich habe zwei Datensätze als Equip1, class1, null und Equi2, null, Site2
nun in der Klausel where i Class1 bin vorbei, so dass ich sollte einen einzelnen Datensatz erhalten, die anstelle von zwei Datensätze enthält class1 .
Wie kann ich das tun?
Bitte die Tags aktualisieren. SQL Server und MySQL benötigen oft unterschiedliche Lösungen für das gleiche Problem. –
Sorry für Tag-Problem. Habe nicht darauf geachtet, welche Tags ich auswähle. Mein Fehler – Roy
Können Sie Beispieldatensätze und die Ausgabe bereitstellen, die Sie erwarten, dass die Probe produziert? SO hat einen [handlichen Leitfaden zur Bereitstellung von Beispieldaten] (http://stackoverflow.com/help/mcve), den Sie möglicherweise nützlich finden. Ich habe diese Frage nicht abgelehnt, deshalb kann ich nicht sicher sein, warum es eine Punktzahl von -1 hat. Aber wenn ich raten müsste, würde ich sagen, dass du Punkte verloren hast, weil deine Frage schwer zu lesen ist. –