Auswahl mit "nicht"-Eigenschaft
Hallo in die Runde vom Ahnungslosen:
Ausgangssituation: Es gibt eine Tabelle Projekte und eine Tabelle Vorgänge. Vorgänge kennt u.a. "Dokumenatation", "Frist", "Termin" und auch "Wiedervorlage". Außerdem ein J/N-Feld "erledigt".
Nun möchte ich gerne Ansicht erstellen, die mir alle Projekte anzeigt, in denen
- KEIN Vorgang mit einer Wiedervorlage, die
- NICHT erledigt ist
haben. Nur: wie krieg ich das hin?
Ich danke sehr für Unterstützung. Orkanhafte Grüße aus Hamburg Frank
17 Antworten
-
Wie sind die beiden Tabellen Projekte und Vorgänge miteinander verknüpft? Ist Vorgänge eine Untertabelle von Projekte?
Grüße Maurice
-
hallo Maurice, keine Untertabelle, sondern Projekte Vorgänge 1:n. Ganz herzlich Frank
-
Ich verstehe die Bedingungen noch nicht ganz kannst du mich korrigieren:
* Der Vorgang muss eine Wiedervorlage haben
* Der Vorgang soll erledigt seinOder habe ich etwas falsch verstanden?
Falls das korrekt wäre sollte eine Abfrage dieser Art funktionieren:
select Projekte where 'Vorgänge'.'erledigt' and 'Vorgänge'.'Wiedervorlage' != null;
Falls nicht erläutere bitte ein wenig genauer was das Endresultat sein sollte.
-
Hallo Etienne
Angezeigt werden sollen alle Projekte, bei denen es
entweder gar KEINEN Vorgang "Wiedervorlage" gibt
oder nur "Wiedervorlagen", die schon "erledigt" sind
Hoffe, ich konnte es klarer ausdrücken. Danke für die Nachfrage! Ganz herzlich Frank
-
Welcher Art ist das Feld Wiedervorlage?
-
Jetzt verstehe ich: die TAbelle Vorgänge hat die Einträge "Wiedervorlage", "Frist" etc.
select Projekte where 'Vorgänge'.Wiedervorlage=null or ('Vorgänge'.Wiedervorlage!=null and 'Vorgänge'.erledigt = true)
Gruß Maurice
-
das klingt so wie wenn es das ausdrückt, was ich sagen will - also dem Ninox :) Vielen Dank! werde berichten.
-
Sodale, Problem: Wiedervorlage ist eine mögliche Auswahl aus einem Auswahlfeld "Vorgangstyp" - Frist (1) usw, Wiedervorlage hat die Nummer 9
Wie übersetze ich das jetzt in die richtige Logik von Maurice?
-
Ich werfe mal meinen Hut in den Ring.
Es ist immer schwer, wenn man bröckchenweise Informationen erhält.
So wie ich jetzt die Ausführungen von Frank verstehe:select Projekte where 'Vorgänge'.number(Vorgangstyp) != 9 or ('Vorgänge'.number(Vorgangstyp)=9 and 'Vorgänge'.erledigt = true)
oder
select Projekte where 'Vorgänge'.text(Vorgangstyp) != "Wiedervorlage" or ('Vorgänge'.text(Vorgangstyp)="Wiedervorlage" and 'Vorgänge'.erledigt = true)
Das kann aber aufgrund der verwirrenden Angaben auch falsch sein.
Wobei Maurice hier die Hauptatbeit mit seiner Intuition geleistet hat. -
darf ich meine Kappe dazu werfen? ;)
('Vorgänge'.number(Vorgangstyp)=9 and 'Vorgänge'.erledigt = true)
wird IMHO nicht wie gewünscht funktionieren - einzelnen Projekten können ja mehrere Vorgänge zugeordnet sein.Ich würde versuchen:
select Projekte where cnt('Vorgänge' [number(Vorgangstyp)!=9])=0 or cnt('Vorgänge' [Vorgangstyp=9 and erledigt=true])>0
-
Vielen Dank Uwe - das mit dem bröckchenhaft liegt daran, dass ich zwar weiß, was ich möchte, aber - qua non-IT-fex - nur mein Bestes geben kann, vollständig zu beschreiben - mit leider mäßigem Erfolg. Ich werd Deinen Ansatz gleich mal eingeben!
Resultat: Angezeigt werden jetzt auch die Datensätze, bei denen es eine nicht-erledigte Wiedervorlage gibt.
Ich versuch mich nochmal mit Beschreibung meines Problems:
Projekt A hat KEINE Wiedervorlage eingetragen -> soll angezeigt werden
Projekt B hat EINE Wiedervorlage eingetragen, die nicht erledigt ist -> soll nicht angezeigt werden
Projekt C hat EINE Wiedervorlage eingetragen, die erledigt ist -> soll angezeigt werden
Projekt D hat ZWEI Wiedervorlagen eingetragen, von denen eine erledigt ist, eine nicht -> soll nicht angezeigt werden.
Vielen Dank für Eure Hirn-kcal! Ganz herzlich Frank
-
Hallo Frank.
Vorschlag: Mach mal eine Dummy-DB mit Beispiel-Daten und stell sie hier über einen DropBox-Link odwer was anderem rein.
Dann wissen wir wie genau deine Verbindungen aussehen und auf welchen Feldarten die Abfrage aufgebaut ist.
Dann kann man es sicher leichter nachvollziehen. -
Hallo,
zu Torstens Einwand:
('Vorgänge'.number(Vorgangstyp)=9 and 'Vorgänge'.erledigt = true) wird IMHO nicht wie gewünscht funktionieren - einzelnen Projekten können ja mehrere Vorgänge zugeordnet sein.
Weil die Wiedervorlage und das "erledigt" sich wohl auf den gleichen Vorgang beziehen soll, muss wohl eine for-Schleife über die Vorgänge laufen. Aber wie Uwe sagt: eine Dummy-DB ist sicherlich der richtige Ansatz.
Gruß Maurice
-
Vielleicht funktioniert ja dieses?
(select Projekte)[not contains(concat('Vorgänge'.Vorgangstyp), "Wiedervorlage") or contains(concat('Vorgänge'.Vorgangstyp), "Wiedervorlage") and not contains(concat('Vorgänge'.erledigt), "Nein")] -
Der Ansatz von Torsten hat funktioniert. Vielen Dank!!!
Und danke an alle :) dürfte ich noch um Aufklärung bitten, wie ich so eine DummyDB allen hier hätte zur Verfügung stellen können? Allen ein großartiges Wochenende, wir müssen jetzt die Leinen zurren, sonst geht der Laptop mit der funktionierenden Datenbank schwimmen:) Ganz herzlich Frank
-
Der Ansatz von Torsten hat funktioniert. Vielen Dank!!!
Und danke an alle :) dürfte ich noch um Aufklärung bitten, wie ich so eine DummyDB allen hier hätte zur Verfügung stellen können? Allen ein großartiges Wochenende, wir müssen jetzt die Leinen zurren, sonst geht der Laptop mit der funktionierenden Datenbank schwimmen:) Ganz herzlich Frank
-
Freut mich, wenn es mit der Lösung von Torsten funktioniert.
Content aside
- vor 2 JahrenZuletzt aktiv
- 17Antworten
- 277Ansichten