Office: (Office 2010) Abfrage Kriterium "Kein Datensatz vorhanden"

Helfe beim Thema Abfrage Kriterium "Kein Datensatz vorhanden" in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe folgendes Problem: Eine Access Abfrage mit 12 Tabellen. Tabelle 1 beinhaltet alle Datensätze. Die Abfrage lautet also jeweils:... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von d-steini, 25. Januar 2017.

  1. Abfrage Kriterium "Kein Datensatz vorhanden"


    Hallo,
    ich habe folgendes Problem:

    Eine Access Abfrage mit 12 Tabellen.
    Tabelle 1 beinhaltet alle Datensätze. Die Abfrage lautet also jeweils: Beinhaltet alle Datensätze aus Tab1 und nur die Datensätze aus Tab (2-12) bei denen die Inhalte gleich sind.
    Soweit so gut - funktioniert auch.
    Nun möchte ich aber für jede Tabelle 2-12 das Kriterium einfügen, dass ein Wert >0,1 sein muss.
    Leider zeigt dann die Abfrage auch nur die Datensätze an wo in allen Tabellen x>0,1 ist. Ich möchte aber dass trotzdem alle Datensätze aus Tab 1 agezeigt werden. Die Felder in Tabelle 2-12 deren Datensätze nicht vorhanden sind sollen aber als leeres Feld angezeigt werden. Gibt es ein Oder-Kriterium durch dass auch Datensätze angezeigt werden die nicht vorhanden sind? "leer" oder "ist null" funktioniert leider nicht. Ich bräuchte ein "kein Datensatz vorhanden"
    Hoffe ich habe mich verständlich ausgedrückt.

    Hier noch der SQL-Code: (Kriterium betrifft ersmal nur eine Tabelle und somit fehlen in der Abfrage die Datensätze der anderen Tabelle. Es werden als nur Datensätze aus der Tabelle mit Kriterium angezeigt die dort >0,1 sind, nicht aber die Datensätze aus den anderen Tabellen)

    SELECT [All-Genes_ohne Seq3].Chr, [All-Genes_ohne Seq3].Gene, [889-NMI-REZ1].Gene, [889-MI].Gene, [4727-NMI-PT].Gene, [4727-MI].Gene, [3679-NMI-PT].Gene, [3679-MI].Gene, [1417-NMI-PT].Gene, [1417-MI].Gene, [2139-NMI-PT].Gene, [2139-NMI-PT].Allel_freq, [2139-MI].Gene, [2102-MI].Gene, [5538-MI].Gene, [3848-MI].Gene
    FROM (((((((((((([All-Genes_ohne Seq3] LEFT JOIN [889-NMI-REZ1] ON [All-Genes_ohne Seq3].Gene = [889-NMI-REZ1].Gene) LEFT JOIN [889-MI] ON [All-Genes_ohne Seq3].Gene = [889-MI].Gene) LEFT JOIN [4727-NMI-PT] ON [All-Genes_ohne Seq3].Gene = [4727-NMI-PT].Gene) LEFT JOIN [4727-MI] ON [All-Genes_ohne Seq3].Gene = [4727-MI].Gene) LEFT JOIN [3679-NMI-PT] ON [All-Genes_ohne Seq3].Gene = [3679-NMI-PT].Gene) LEFT JOIN [3679-MI] ON [All-Genes_ohne Seq3].Gene = [3679-MI].Gene) LEFT JOIN [1417-NMI-PT] ON [All-Genes_ohne Seq3].Gene = [1417-NMI-PT].Gene) LEFT JOIN [1417-MI] ON [All-Genes_ohne Seq3].Gene = [1417-MI].Gene) LEFT JOIN [2139-NMI-PT] ON [All-Genes_ohne Seq3].Gene = [2139-NMI-PT].Gene) LEFT JOIN [2139-MI] ON [All-Genes_ohne Seq3].Gene = [2139-MI].Gene) LEFT JOIN [2102-MI] ON [All-Genes_ohne Seq3].Gene = [2102-MI].Gene) LEFT JOIN [5538-MI] ON [All-Genes_ohne Seq3].Gene = [5538-MI].Gene) LEFT JOIN [3848-MI] ON [All-Genes_ohne Seq3].Gene = [3848-MI].Gene
    WHERE ((([2139-NMI-PT].Allel_freq)>0.1));


    Danke für eure Hilfe!

    :)
     
    d-steini, 25. Januar 2017
    #1
  2. Wäre nett, wenn du den SQL Code in eine lesbare Form formatieren könntest und hier als Code einfügen könntest.
     
    Ekimflow, 27. Januar 2017
    #2
  3. Hallo,
    das Ganze sieht nach einem nicht brauchbaren Datenmodell aus.
    Tabelle 2 bis 12 sollte eine Tabelle (ich nenn sie mal tblGen2Bis12) sein mit dem Aufbau:
    Code:
    Das GeneType Merkmal möglichst auch in eine Tabelle auslagern und mit Fremdschlüssel statt Text in die tblGen2Bis12 speichern.

    Danach kannst du ein Kreuzprodukt erzeugen aus Tabelle 1 und der GeneType Tabelle und darauf die tblGen2Bis12 joinen.

    maike
     
  4. Abfrage Kriterium "Kein Datensatz vorhanden"

    Hallo,
    hier wäre wohl eher das Datenmodell zu überdenken.
    Hier fehlen Tabellen. Solche Feldnamen (889-NMI-REZ1) sind als Datensätze in einer extra Tabelle anzulegen.
    Die Werte wiederum kommen auch in eine extra Tabelle mit einem Fremdschlüssel zur jetzigen Tabelle und einem Fremdschlüssel zu der Tabelle mit den Feldern 889-NMI-REZ1 usw. als Feldinhalt. Der Wert (0,1 etc.) steht dann nur in einer Spalte und die kompletten LEFT JOINs entfallen ersatzlos.
    Zeige bitte mal ein Bild des Beziehungsfensters.
     
    gpswanderer, 27. Januar 2017
    #4
  5. Zur Technik:
    Nicht erst die Tabelle mit LEFT JOIN verknüpfen und dann das Gesamte filtern, sondern erst die Tabelle filtern und dann JOINEN:
    Code:
    Hier hättest Du deutlich weniger Schreibarbeit, wenn Du wie beschrieben etwas normalisierst und damit weniger Tabellen hast.
     
  6. Hallo ebs17,

    Deine Lösung scheint mir plausibel. Danke!
    Leider bin ich ein SQL-Laie. Ich versuche immer in stundenlanger Arbeit mir Codes abzugucken und neu zusammenzustückeln bis es funktioniert. Mit Deinem Code komme ich nicht recht weiter so dass er funktioniert.
    Kannst Du mir deinen Code für meine Abfrage anhand einem Beispiel von 2 Tabellen gegen eine näher erläutern? Darüber würde ich mich sehr freuen!
    Vieleicht anhand folgendem Beispiel:
    Tabelle A enthält alle möglichen Zeilen / Datensätze in der Spalte "Gene":
    Tabelle B enthält Gene von Patient X in einer Spalte und den zugehörigen Wert nach dem gefiltert werden soll "Allel-freq" in einer Spalte.
    Tabelle C enthält analog B die Daten von Patient Y.

    Am Ende gibt es dann 20 Patienten. Noch als Hinweis - weiß nicht ob das wichtig ist zu wissen. Tabelle A ist eine UNION-Abfrage aus allen 20 Patiententabellen, so dass alle möglichen Gene ohne Duplikate in Tabelle A/Union-Abfrage B stehen.

    Ein freundliches GLÜCK AUF! aus Zwickau.
     
    d-steini, 29. Januar 2017
    #6
  7. Hallo,
    Leider gehst Du auf die Hinweise zum Datenmodell nicht ein. Und wenn man jetzt liest "20 Patiententabellen" so ist das Datenmodell eher als unbrauchbar einzustufen. Was Dir nachfolgende Auswertungen drastisch erschwert und möglicherweise auch unmöglich macht.
     
    gpswanderer, 29. Januar 2017
    #7
  8. Abfrage Kriterium "Kein Datensatz vorhanden"

    Zitat:
    Leider gehst Du auf die Hinweise zum Datenmodell nicht ein. Und wenn man jetzt liest "20 Patiententabellen" so ist das Datenmodell eher als unbrauchbar einzustufen. Was Dir nachfolgende Auswertungen drastisch erschwert und möglicherweise auch unmöglich macht.

    Weitere Auswertungen gibt es nicht, ist der letzte Schritt:
    Zum Datenmodell: Wenn ich für jeden Patienten aus einer Analyse jeweils über 2000 Events mit je 5 Eigenschaften erhalte kann ich das "Datenmodell" nicht nach Access ausrichten! Die 20 Tabellen sind nunmal da und sind in Hinsicht auf Fragestellung und Versuchsanordnung auch notwendig.

    Zitat: Solche Feldnamen (889-NMI-REZ1) sind als Datensätze in einer extra Tabelle anzulegen.
    889-NMI-REZ1 ist kein Feldname, sondern eine der 20 Tabellen.
    Feldnamen wären: Gen, Position, Chromosom, Allel-freq ...
     
    d-steini, 29. Januar 2017
    #8
  9. Du stellst eine Patientabelle aus 20 einzelnen Patiententabellen per UNION zusammen und verknüpfst dann wiederum mit diesen 20 Tabellen?
    Schreib bitte wo anders ab, schon aus Eigennutz.

    Wie es sich jetzt liest, bräuchtest Du als Ausgangssituation eine einfache m:n-Beziehung. Eine Tabelle mit den Patienten und nur deren persönlichen Daten. Eine Tabelle Gene. Sowie dann eine Verknüpfungstabelle, wo die Kombination Patient-Gen über deren Schlüssel zusammengeführt wird und da um weitere Informationen (Allel-freq) ergänzt werden können.

    An einem einfachen und reproduzierbaren Datenmodell erklären sich dann verwendete Abfragen einfacher.


    //Edit:
    ...zig Einzeltabelle mit strukturgleichen Inhalten sind gar kein Datenmodell, sondern eine Sammlung, meinetwegen für Rohdaten. Dateninhalte kann man aber von der Sammlung in ein Datenmodell verschieben - solche Strukturänderungen kennt man, wenn man Kuchen mit Eiern bäckt. Die Transportstruktur Eierschale wird da typisch recht schnell entfernt und eher nicht durchgehend unverändert beibehalten.
     
  10. Wie gesagt ich bin Laie und nutze Access nur weil man damit Abfragen machen kann. Am Ende brauche ich eine Tabelle wo jedes Gen (als Zeile) nur einmal vorkommt. Deshalb die erst Union-Abfrage um erst einmal solch eine Tabelle zu bekommen (Alle Gene ohne Duplikate) Alternativ hätte ich auch alle 20 Patiententabellen in Excel untereinander kopieren können und Duplikate entfernen. Danach import in Access. Dann hätte keiner gemeckert, das die 20 Tabellen schon mal abgefragt worden sind.
    Der zweite für mich notwendige Schritt ist eine Tabelle zu generieren mit der Information welches Gen bei welchem Patienten mutiert ist. In dieser Tabelle möchte ich dann ganz zum Schluss durch Filtern, Sortieren, Zählenwenn verschiedene Fragestellungen auswerten.
    Das der Hintergrund ... was aber eigentlich niemanden etwas angeht.
    Schade dass man in Foren nie (ist mir schon oft passiert, egal ob IT-Anwendungen, Bau, oder sonstiges) eine auf die Frage zielführende Antwort bekommt und nur durch stundenlanges probieren ans Ziel kommt und sich am Ende fragt warum die eigentlichen Spezialisten die sich in den Foren so tummeln diese letztlich einfache Antwort nicht geben konnten.

    Beste Grüße

    ich brobiere weiter rum und komme sicher, bis vielleicht Mittag, ans Ziel
     
    d-steini, 29. Januar 2017
    #10
  11. Datenbanken sind i.A. etwas Langlebiges, und da herrscht das große Unbehagen, dass man dann selber oder geschätzte Kollegen ein solches Gebilde unter Zeitdruck fortführen müssten, siehe dann Es war einmal eine kleine Exceltabelle ...
    Wenn ein Neuling unter Missachtung von üblichen Regeln etwas zusammengestellt hat, was bis dahin irgendwie zu funktionieren scheint, ist da kein Bewerbungshighlight.
    An meine Gene würde ich auch lieber den Chefarzt oder wenigstens einen Facharzt ranlassen statt jemanden, der sich da auch mal ausprobieren will.

    Das verstehe ich nun nicht. Das beschriebene Verschieben der Kriterien ist nur ein Copy&Paste, und die entstehenden Unterabfragen müssen natürlich eigene Bezeichnungen (Aliase) bekommen, damit sie in der weiteren Verwendung identifizierbar sind.
     
  12. Hallo,
    weil es keine einfachen Antworten zu einem unbrauchbaren Datenmodell gibt. Das wird immer in langen Hinweisen und Rückfragen enden weil einfache Antworten ein korrektes Datenmodell voraussetzen.
     
    gpswanderer, 29. Januar 2017
    #12
  13. Abfrage Kriterium "Kein Datensatz vorhanden"

    Danke nochmal Eberhard.
    Ich entschuldige mich bei allen für meine Vorwürfe.
    Habe es mit Eberhards Tipp hinbekommen.

    Danke nochmal!
     
    d-steini, 29. Januar 2017
    #13
  14. Darüber solltest Du Dir im Klaren sein. Im speziellen bildest Du mit der Abfrage partielle kartesische Produkte ab. Gibt es mehr als einen Datensatz in einer Verknüpfung, werden für alle weiteren Verknüpfungen die Werte aus der Verknüpfung kombiniert. Die Werte selbst haben (zumindest in der vorliegenden Form) außer dem gemeinsamen Verknüpfungsfeld keine Beziehung zueinander.

    Wenn andere Kriterien gemäß Deiner Forderung wirken sollen, müssten diese durch den OR-Operator bekannt gemacht werden, was bei vielen Bedingungen die Abfrage schnell unübersichtlich und vermutlich auch langsam macht.
     
Thema:

Abfrage Kriterium "Kein Datensatz vorhanden"

Die Seite wird geladen...
  1. Abfrage Kriterium "Kein Datensatz vorhanden" - Similar Threads - Abfrage Kriterium Datensatz

  2. Abfrage: Anzahl von Kriterium >0

    in Microsoft Access Hilfe
    Abfrage: Anzahl von Kriterium >0: Hallo, [ATTACH] Ich versuche gerade, die Anzahl der belegten Plätze auf einem LKW per Abfrage zu ermitteln. Dabei wäre dann FSPal > 0. Leider zeigt er mir die Anzahl der Plätze an. [ATTACH]...
  3. Teil des Zellinhaltes abfragen in VBA

    in Microsoft Excel Hilfe
    Teil des Zellinhaltes abfragen in VBA: Guten Tag, ich möchte in Zelle E1 den linken 4-stelligen Teil in Zelle A3 abfragen. Habs versucht mit IF (LEFT(R[2]C[-3],4) = "8396") then ... Else ... End If Wer kann...
  4. Kriterium für Abfrage

    in Microsoft Access Hilfe
    Kriterium für Abfrage: Hallo, in einer Abfrage verwende ich folgendes Kriterium für einen Datumsfilter: 367722
  5. SQL-Abfrage mit Kriterium Datum=Heute

    in Microsoft Access Hilfe
    SQL-Abfrage mit Kriterium Datum=Heute: Guten Tag allerseits, ich habe etliche Foren für folgendes Problem durchsucht, aber keine für mich verständliche Antwort gefunden. Aus der Tabelle "Wiedervorlage" möchte ich alle Datensätze...
  6. Kriterium einer Access Abfrage in VBA ändern (s. Code)

    in Microsoft Access Hilfe
    Kriterium einer Access Abfrage in VBA ändern (s. Code): Hallo ans Forum, ich lasse über meine Access-DB diverse Abfragen laufen und exportiere diese dann in eine einzige Excel Datei. Um das Kriterium (Schiffsname), das ich abfrage nicht für jede...
  7. Mehrfachauswahl Listenfeld als Kriterium in Abfrage

    in Microsoft Access Hilfe
    Mehrfachauswahl Listenfeld als Kriterium in Abfrage: Hallo, habe folgendes Problem: In einem Formular wird ein Listenfeld mit Mehrfachauswahl verwendet, um ein Kriterium für eine Abfrage zu definieren, hierzu verwende ich folgenden Code: Code:...
  8. Entweder Oder Kriterium in Abfrage

    in Microsoft Access Hilfe
    Entweder Oder Kriterium in Abfrage: Hey Leute, ich bekomm da etwas nicht hin. Hab in einer Tabelle 2 Spalten a und b. In b steht immer das neuere Datum drin. Wenn in b aber nix drin steht, dann steht das letzte Datum in a. Wie...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden