Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: mocodos am Juli 14, 2011, 09:43:08

Titel: Eingrenzung bei Auswertung/Abfrage
Beitrag von: mocodos am Juli 14, 2011, 09:43:08
Hallo zusammen,

ich komme leider nicht weiter und bräuchte Eure Hilfe.

Ich habe eine Tabelle mit 2 Feldern:

Auftrag   Materialart
111111   rot
111111   blau
111111   grün
111112   blau
111112   rot
111113   grün
111114   rot

Wie kann ich eine Auswertung/Abfrage machen, bei der als Ergebniss nur Aufträge mit Materialart grün erscheinen?

Ich habe im ersten Schritt eine Abfrage auf die Tabelle gemacht, indem ich die Gruppierung mit Eingrenzung "grün" gemacht habe.

Im zweiten Schritt habe ich die Ergebnisse "Aufträge" aus erster Abfrage mit den Werten "Materialart" aus der Tabelle verknüpft. Somit habe ich alle Konstellationen bei den "grün" nicht mehr vorkommt ausgeschlossen.

Auftrag   Materialart
111111   rot
111111   blau
111111   grün
111113   grün

Wie bekomme ich jetzt die Eingrenzung nur auf die Aufträge welche nur aus Materialart "grün" bestehen.
Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: DF6GL am Juli 14, 2011, 10:10:27
Hallo,



"..als Ergebniss nur Aufträge mit Materialart grün.."


einfach so:

Select * from Tabelle where Materialart ="grün"


Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: mocodos am Juli 14, 2011, 12:09:08
Mein Problem ist, daß der gleiche Auftrag aus mehreren Zeilen
bestehen kann, welche den Wert rot oder/und grün enthalten kann.


Als Ergebniss muss man die Aufträge, die aus mehreren Zeilen bestehen und den Wert "grün" + "anderer Wert" haben
rausselektieren, und nur die Aufträge ausgeben, welche auch aus mehreren Zeilen bestehen können, aber nur den Wert "grün" haben.

Nur wie stelle ich es an?!
Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: DF6GL am Juli 14, 2011, 12:29:21
Hallo,

sorry, verstehe Dich nicht...   ???


Hast Du die Abfrage mal getestet?

Was gefällt Dir konkret an diesem Ergebnis nicht?

Oder ist Dein Beispiel nicht authentisch?
Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: mocodos am Juli 14, 2011, 12:54:19
Hallo DF6GL,

ich habe die Abfrage getestet, aber es kommt nicht das raus was ich brauche.

Als Beispiel hier:

Auftrag   Materialart
111111   rot
111111   blau
111111   grün
111113   grün


Nach dem genannten Select erhalte ich folgende Ergebnisse:
Auftrag
111111
111113
Soweit auch verständlich, da hier Zeile/Datensatz für Datensatz abgearbeitet wird.
Allerdings muss bei meinem gewünschten Ergebniss nur
Auftrag
111113
rauskommen, da nur dieser Auftrag nur die Materialart "grün" hat (ob jetzt aus einer Zeile oder mehreren)
Der Auftrag 111111 darf nicht erscheinen, da dier auch die Materialart "rot" oder/und "blau" enthält.


Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: DF6GL am Juli 14, 2011, 13:34:36
Hallo,

ok, dann würde ich sagen, die Fragestellung lautet:

Zeige nur diejenigen Aufträge an, die als einzige Materialart "grün" besitzen:


Select  Tabelle.Auftrag, Tabelle.Materialart from Tabelle
where (Tabelle.Materialart="grün" and  (select count(Auftrag) from Tabelle as tmp  where tmp.Auftrag=Tabelle.Auftrag)=1)
Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: oma am Juli 14, 2011, 22:13:02
Hallo,

es geht doch nichts über eine exakte Zielbeschreibung ;)
Für:  "Zeige nur diejenigen Aufträge an, die als einzige Materialart "grün" besitzen und diese Materialart auch nur einmal vorkommt"  geht auch:

select Auftrag,
count (Auftrag) AS Anzahl, First(Materialart) AS Materialart
from Tabelle
group by Auftrag
having count(Auftrag)=1 and first(Materialart)="grün"


Gruß Oma
Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: mocodos am Juli 15, 2011, 07:23:25
Hallo Oma, hallo DF6GL,

die Variante von DF6GL funktioniert, zeigt leider nur die Aufträge, die als einzige Materialart "grün" besitzen und diese Materialart auch nur einmal vorkommt.

Hier die Tabelle und das Ergebnis:

Auftrag   Auftragsart
111111   rot
111111   blau
111111   grün
111112   blau
111112   rot
111113   grün
111114   rot
111115   rot
111115   grün
111116   rot
111117   grün
111117   grün
111118   grün
111118   grün

Ergebnis:

Auftrag   Ausdr1
111113   grün
111114   grün
111116   grün


Ich bräuchte aber als Ergebnis
alle Aufträge, die als einzige Materialart  nur "grün" besitzen

Das Ergebnis würde  theoretisch so aussehen:

Auftrag   Auftragsart
111111   grün
111113   grün
111115   grün
111117   grün
111117   grün
111118   grün
111118   grün


(Materialart "grün" wird immer gezählt, wenn es nur als eine einzige Materialart im Auftrag vorhanden ist)


@Oma

Bei deiner Variante erhalte ich eine Fehlermeldung.
Ich versuche die Meldung als Bild hochzuladen.

Aber ich danke Euch herzlich für eure Hlfe!!




[Anhang gelöscht durch Administrator]
Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: oma am Juli 15, 2011, 10:49:52
Hallo,

hättest du auch gleich richtig beschreiben können bzw. das letzte Beispiel anführen können!
Wenn Abfrage nicht aktualisierbar sein muss, würde gehen:

SELECT Tabelle.Auftrag, First(Tabelle.Materialart) AS Materialart
FROM Tabelle
GROUP BY Tabelle.Auftrag
HAVING (((First(Tabelle.Materialart))="grün") AND ((Last(Tabelle.Materialart))="grün"))


Gruß Oma
Titel: Re: Eingrenzung bei Auswertung/Abfrage
Beitrag von: oma am Juli 15, 2011, 13:56:45
Hallo, 

lieber so ;):

SELECT Auftrag, Max(Tabelle.Materialart) AS Materialart
FROM Tabelle
GROUP BY Tabelle.Auftrag
HAVING (((Max(Tabelle.Materialart))="grün") AND ((Min(Tabelle.Materialart))="grün"))


Gruß Oma