Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Eingrenzung bei Auswertung/Abfrage

Begonnen von mocodos, Juli 14, 2011, 09:43:08

⏪ vorheriges - nächstes ⏩

mocodos

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.

DF6GL

Hallo,



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


einfach so:

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


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mocodos

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?!

DF6GL

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?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mocodos

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.



DF6GL

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)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

oma

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
nichts ist fertig!

mocodos

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]

oma

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
nichts ist fertig!

oma

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
nichts ist fertig!