Zum Inhalt springen

geeignete Abfrage(Access)


Firewire

Empfohlene Beiträge

Stecke zur Zeit an einem Problem an dem ich nicht weiter komme.Ich versuche eine vereinfachte Erklärung abzugeben,welche aber den gleiche Sinn hat.Bitte nicht lachen, aber ich habe leider keine andere Erklärung gefunden:

-in einer Tab. habe ich die Spalten Bäume und Früchte

-Baum A hat z.B. alle Fruchtsorten: Birnen,Kirschen,Pflaumen und Äpfel

-Baum B hat:Birnen, Kirschen und Äpfel

-jeder Baumart steht nur einer Fruchtart gegenüber,somit existieren mehrere gleiche Baumarten(max.4)

-fast alle Baumarten(unbestimmte Anzahl) haben Birnen auf ihren Ästen

-außer 2,3(unbestimmte Anzahl)Bäume haben

keine Birnen

=>durch welche ausgetüftelte Abfrage erhalte ich die Bäume ohne Birnen ???!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aus deinem Tabellen- und Spaltenaufbau schlau zu werden ist gar nicht so einfach.

Ich hoffe ich gehe richtig in meiner Annahme, dass du nur eine Tabelle hast, die keine weiteren Beziehungen besitzt.

Gehe in die Entwurfsansicht der Abfrage und gib in der Spalte "Früchte" folgendes Kriterium ein NICHT WIE BIRNEN .

Dann werden dir all die Baumarten angezeigt, die keine Birnen haben.

Sollte das nicht reichen, musst du deine Fragen nochmal präzisieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@EGTEB:

Wenn ich das richtig kapiert habe, handelt es sich hier um eine Tabelle zur Auflösung einer n:n-relation !?

Ein Baum kann beliebig viele Früchte haben,

jede Frucht kann auf beliebigen Bäumen hängen. n:n.

Dann dürfte deine Abfrage nicht klappen (allerdings kann/kenne ich kein Access).

Denn wenn in der Tabelle steht:

Baum A <-> Birnen

Baum A <-> Kirschen

Baum B <-> Schokolade

müsste deine Abfrage ergeben:

Baum A <-> Kirschen

Baum B <-> Schokolade

was aber falsch ist, da es ja einen Eintrag gibt mit Baum A <-> Birnen.

Soweit ich das sehe kommt man hier nur mit verschachtelten SELECTs hin.

vermutend,

DevilDawn

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo EGTEB!

Also mit Nicht wie Birnen erhalte ich alle anderen Fruchtsorten,die auf den Baumarten(n)

hängen.Jedoch möchte ich die Baumsorten herausgefiltert haben,die keine Birnen haben.

Irgendwie muß bei der Abfrage eine Beziehung zwischen Baumart und Frucht definiert werden.

Aber scheinbar wird mir das nur mit einem Script gelingen. ODER?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

also ich habe eine Lösung, die allerdings eine kleine Änderung am Datenmodell voraussetzt:

Tabelle baum

------------

id

baum_name

=============

Tabelle frucht

--------------

id

frucht_name

==============

Tabelle nm

----------

ref_baum

ref_frucht

In der Tabelle nm findet die Zuordnung der Früchte zu den Bäumen statt:

z.B. 1 - 1 == der Baum mit der ID 1 trägt die Frucht mit der ID 1.

Und hier kommt der SQL der Abfrage:

SELECT [nm].[ref_baum], First([baum].[baum]) AS [ErsterWert von baum]

FROM nm

LEFT JOIN baum ON [nm].[ref_baum]=[baum].[id_baum]

GROUP BY [nm].[ref_baum]

HAVING (((nm.ref_baum) Not In (SELECT nm.ref_baum FROM nm WHERE (((nm.ref_frucht)=1)) ; )));

In meinem Beispiel ist die Birne die Frucht mit der ID 1.

Damit jeder Baum nur einmal angezeigt wird, habe ich <First([baum].[baum]) AS [ErsterWert von baum]> eingefügt, denn sonst beinhaltet das Ergebnisset Datensätze für jede Zuordnung der Bäume, die Birne nicht zugeordnet haben. Geht in der Entwurfsansicht der Abfrage über "Funktion-->Erster Wert" eek.gif

Hoffe, das hilft weiter.

fadi

Mußte ein Leerzeichen nach dem vorletzten ; einfügen, weil es sonst ein Smiley wird. wink.gif

<genau der>

[Dieser Beitrag wurde von fadi am 25. Juli 2000 editiert.]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo fadi!

Also die "Tabelle nm" wäre dann meiner ursprünglichen wohl gleich, da ich hier auch eine Spalte "Baum" und eine Spalte "Frucht" habe.Deiner Meinung nach müßte ich ja 2 Primärschlüssel in einer Tab.verwenden(ID=>Frucht + ID=>Baum).

Bin ich jetzt völlig im Zauberwald,aber irgendwie kann ich das nicht ganz nachvollziehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

die Tabelle nm besteht aus zwei Long Integer Feldern und trägt Referenzen auf die Primärschlüssel der Tabellen frucht und baum. Insofern unterscheidet sich meine von Deiner Tabelle. Schau mal in den Thread >>Access Verständnisproblem (Beziehungen)<<, da wird eine verwandte Thematik diskutiert. wink.gif

Ich schätze aber, die Lösung von wolle ist handlicher und kommt auf das gleiche Ergebnis hinaus.

fadi

[Dieser Beitrag wurde von fadi am 28. Juli 2000 editiert.]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Wolle!

Von welcher Ausgangsposition gehst du aus?:

-2 getrennte Tabellen(Frucht und Baum)

-oder nur eine Tab. mit den Spalten(Frucht und Baum)

Also ich bin hier echt am Verzweifeln und muß auch eingestehen das ich wenig Ahnung von der Syntax habe.

Mein Vorschlag(in einer Tab.Frucht und Baum):

Select [Garten].Baum FROM [Garten]

WHERE ([Garten].Baum) NOT IN (SELECT Garten.Baum FROM Baum WHERE (Garten.Frucht="Birne")))

GROUP BY [Garten].Baum, [Garten].Frucht;

Wäre echt nett wenn mir hier einer weiter hilft.

[Dieser Beitrag wurde von Firewire am 28. Juli 2000 editiert.]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin firewire,

also ich habe wolles Vorschlag auch mal nachgebildet und habe mir eine Tabelle mit den Feldern id, baum und frucht erzeugt, wobei

ID <> ein AutoWert-Feld (ohne Duplikate)

baum <> ein Textfeld

frucht <> ein Textfeld

ist. Die Tabelle heißt Tabelle1.

Hier trägst Du entsprechend Deine Daten ein:

1 <> a <> pflaume

2 <> a <> birne

3 <> a <> kirsche

4 <> b <> apfel

5 <> b <> kirsche

6 <> c <> pflaume

Wenn Du dann eine neue Abfrage erzeugst, die auf der oben erzeugten Tabelle basiert und folgenden SQL in sich trägt:


SELECT Tabelle1.id, Tabelle1.baum

FROM Tabelle1

GROUP BY Tabelle1.id, Tabelle1.baum

HAVING (((Tabelle1.baum) Not In (select baum from tabelle1 where frucht="Birne" ; )));

bekommst Du folgenden Ergebnissatz:

4 b

5 b

6 c

Das unschöne ist meiner Meinung nach halt, daß Du zu viele Datensätze erhältst, denn Du willst ja nicht alle Zuordnungen haben, sondern nur die Bäume, die keine Birnen tragen.

Wenn es immer noch nicht klar ist, schick mir 'ne eMail.

fadi

Und wieder das Smiley-Problem im SQL wink.gif

[Dieser Beitrag wurde von fadi am 28. Juli 2000 editiert.]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...