Carwyn Geschrieben 12. Juli 2012 Geschrieben 12. Juli 2012 Hallo, zuerst vorab, ich hab nicht täglich mit SQL zu tun, deswegen entschuldigt, wenn mir manche Sachen nicht direkt klar sind oder ich auf einfache Dinge nicht komme. So, nachdem der Disclaimer erledigt ist, kommen wir auf mein Problem: Ich habe hier Datensätze. Die Datensätze sind Vorgänge. Das heisst, im Endeffekt wird ein durchlaufener Arbeitsprozess pro Datensatz angegeben. Hier werden Felder gefüllt und zusätzliche Informationen hinterlegt. Es gibt standardisierte Felder in diesem System und es gibt Zusatzfelder, die wir selbst erstellen und dem System hinzufügen können, um den Prozess unseren Gegebenheiten anzupassen. Genau hier ist der Knackpunkt. Die Zusatzfelder des Vorgangs werden in einer separaten Tabelle geführt, mit FeldID, VorgangsID und Feldinhalt. Soweit, so schön. Allerdings ist es so designed, dass nicht jeder Vorgang in der Zusatzfeldtabelle alle Felder eingetragen hat, sondern nur die Felder, die bei ihm auch befüllt wurden. Es gibt nun Zusatzfelder bei uns, die nicht zwingend ausgefüllt werden müssen. "Aktenzeichen" ist so ein Fall. Das Feld kann im Falle eines vorhandenen externen Aktenzeichens gefüllt werden mit Daten, jedoch muss es nicht gefüllt werden. Tritt letzteres ein, existiert dieses Zusatzfeld in der Zusatzfeldtabelle bei diesem Vorgang nicht. Ich möchte nun eine Selektion machen, bei der ich alle mir relevanten wie auch optionalen Zusatzfelder und deren Werte angezeigt bekomme. Da ich immer wieder auf die Zusatzfeldtabelle zugreifen muss pro Feld, darf ich also prima joinen pro Feld und in der In der WHERE-Klausel müsste ich angeben "Where Zusatzfeldxy.FeldID = 123456", um dann den Inhalt dieses Feldes ausgelesen zu bekommen. Wenn es das Feld nicht gibt, dann wird der Vorgang in der Selektion nicht gefunden, weil er dem Kriterium nicht entspricht - was ich vermeiden möchte. Mache ich das bereits im Join (bspw. "Vorgang.VorgangsID = Zusatzfeld.VorgangsID AND Zusatzfeld.VorgangsID= 123456") wird auch das nicht klappen, wenn der Datensatz nicht vorhanden ist. Ich möchte aber sowohl die Vorgänge sehen, in denen ein Aktenzeichen eingetragen ist, wie auch die, in denen es nicht eingetragen ist, da dieser Feldeintrag optional ist. Übersehe ich etwas, ist es total einfach oder möchte ich etwas erreichen, was so nicht geht? Oder hab ich mit meinem Geschriebenen mein blankes Nichtwissen präsentiert? Falls letzteres der Fall ist: Deswegen frage ich Euch, die Ihr Euch damit auskennt.
flashpixx Geschrieben 12. Juli 2012 Geschrieben 12. Juli 2012 Du möchtest Dich über left / right join informieren SQL Eine Änderung des Where reicht nicht
Carwyn Geschrieben 12. Juli 2012 Autor Geschrieben 12. Juli 2012 Danke. Hat mir Fisi from hell auch schon gesagt. Es funktioniert.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden