Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: king.crizon am September 23, 2015, 10:51:14

Titel: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: king.crizon am September 23, 2015, 10:51:14
Hallo Liebe Access-Profis,

ich benötige Hilfe bei einer Abfrage und zwar geht es um folgendes:

Ich möchte mir ein meiner 2. Spalte der Tabelle nur Werte anzeigen lassen, die sich voneinander unterscheiden.

Code könnte so aussehen:
SELECT DISTINCT Zulieferer, Betreuer
FROM Tabelle
WHERE Count(Betreuer) >2
GROUP BY Zulieferer, Betreuer
ORDER BY Zulieferer, Betreuer


Hintergrund ist folgender:
Die erste Spalte einen Zulieferer, die zweite Spalte beinhaltet den Betreuer des Zulieferers. Dieser ist durch Materialnummern dem Zulieferer zugeordnet. Da ein Betreuer mehrere Materialien bei einem Zulieferer haben kann gibt es entsprechende Duplikate in der Liste. Diese werden durch DISTINCT elimiert. Nun möchte ich nur die Zulieferer angezeigt bekommen welcher mehr als 2 versch. Betreuer hat (>2 Betreuer).

Hat jemand eine Idee? Vielen Dank im voraus.
Beste Grüße
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: MaggieMay am September 23, 2015, 12:53:23
Hi,

versuche es mal hiermit:
SELECT DISTINCT Zulieferer, Betreuer
FROM Tabelle
WHERE Zulieferer IN (Select Zulieferer From TabelleOderAbfrage Group By Zulieferer Having COUNT(*) >2)
ORDER BY Zulieferer, Betreuer
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: king.crizon am September 23, 2015, 13:41:19
Hallo MaggieMay,

vielen Dank für deine Antwort. Leider klappt es nicht. Bei der Abfrage werden mir auch Zulieferer angezeigt welche nur einen Betreuer (mit z.B. 13 Materialien) haben.

Hast du sonst noch eine Idee wie ich es lösen könnte? Ich bin wirklich überfragt.
Besten Dank!

LG
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: MaggieMay am September 23, 2015, 13:52:54
Dann rate doch mal, was ich hiermit wohl gemeint haben könnte:
ZitatSelect Zulieferer From TabelleOderAbfrage Group By Zulieferer Having COUNT(*) >2
Die Abfrage muss halt so konstruiert sein, dass sie nur die Zulieferer und ihre Ansprechpartner/Betreuer liefert.
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: king.crizon am September 23, 2015, 14:21:33
Ah danke nochmal für den Hinweis ;)Jetzt klappt es! Vielen Dank für deine Hilfe!

Access brauch ziemlich lange um diese Abfrage zu laden, ich nehem an dass das an den knapp 600 Datensätzen in der Abfrage liegt?

Nochmals besten Dank!
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: MaggieMay am September 23, 2015, 14:40:54
Die Zahl 600 ist sicherlich kein Grund für eine langsame Abfrage.
Sind die Tabellen nicht indiziert?
Zeig doch nochmal den kompletten SQL-Code, der dazu eingesetzt wird.
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: king.crizon am September 23, 2015, 15:56:50
Anbei der Code für die Abfrage:
SELECT Zulieferer, Betreuer
FROM Tabelle
WHERE Zulieferer IN (Select Zulieferer From LiefDis Group By Zulieferer Having COUNT(*) >2)
GROUP BY Zulieferer, Betreuer
ORDER BY Zulieferer, Betreuer;


Der Code für die LiefDis lautet:
SELECT DISTINCT Zulieferer, Betreuer
FROM Tabelle
GROUP BY Zulieferer, Betreuer;


Die Felder "Zulieferer" und "Betreuer" sind in der Tabelle indiziert mit "Ja (Duplikate möglich)"

Nochmals Danke für die Hilfe vorab.
LG
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: MaggieMay am September 23, 2015, 16:03:08
Das sieht doch sehr simpel aus, kann mir nicht vorstellen wieso das langsam sein sollte.
Du könntest aber noch folgende Alternative ausprobieren:
SELECT Zulieferer, Betreuer
FROM Tabelle
WHERE DCount("*","LiefDis","Zulieferer ='" & Zulieferer & "'") >2
GROUP BY Zulieferer, Betreuer
ORDER BY Zulieferer, Betreuer;

Vermutlich entspricht das Beispiel aber auch nicht ganz der Realität, oder?
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: king.crizon am September 23, 2015, 16:10:09
Ich probiere die Variante mal aus. Sofern dann alles fertig ist poste ich mal den gesamten SQL Code. Ich muss nämlich noch eine weitere Bedingung mit aufnehmen. Diese könnte mir evtl. noch schierigkeiten bereiten.
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: king.crizon am September 23, 2015, 16:21:12
So hier nun nochmal das komplette Modell so wie ich es in Access habe.

Eine Tabelle "Bewertung"
-> Beinhaltet Spalten "Lieferantenname", "Disponent", "Sachgebiet", "Materialnummer", "Gesamtfaktor"

Hier der Code für die gewünschte Abfrage:
SELECT Bewertung.Lieferantenname, Bewertung.Disponent, Count(Bewertung.Materialnummer) AS [Anzahl Materialnummern], Sum(Bewertung.Gesamtfaktor) AS [Summe Gesamtfaktor]
FROM Bewertung
WHERE Bewertung.Lieferantenname IN (Select Lieferantenname From LiefDis Group By Lieferantenname Having COUNT(*) >2)
GROUP BY Bewertung.Lieferantenname, Bewertung.Disponent
ORDER BY Bewertung.Lieferantenname, Bewertung.Disponent;


Hier der Code für LiefDis:
SELECT DISTINCT Bewertung.Lieferantenname, Bewertung.Disponent
FROM Bewertung;


In der Tabelle sind alle Felder mit Index Duplikate möglich versehen.

Warum ist die Abfrage so dermaßen langsam bei ca. 600 Datensätzen?

LG
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: MaggieMay am September 23, 2015, 17:05:52
Alle Felder zu indizieren ist möglicherweise auch kontraproduktiv.

Es handelt sich aber um eine Access-Tabelle, oder?
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: king.crizon am September 23, 2015, 17:16:33
Es handelt sich um eine Access Tabelle die aus Excel importiert wurde mittels "Externe Daten" > "Aus Excel importieren"
Titel: Re: Abfrage: Nur Daten in einer Spalte anzeigen wenn diese unterschiedlich
Beitrag von: MzKlMu am September 23, 2015, 19:09:02
Hallo,
wahrscheinlich wäre es sinnvoller, die Tabelle aus Excel in ein normalisiertes Datenmodell zu übertragen. Eine Exceltabelle einfach in Access zu übernehmen ist meist nicht sinnvoll. Hier ist mindestens noch eine (oder gar zwei) Tabelle(n) erforderlich die sich aber aus der Exceltabelle erzeugen lässt bzw. lassen.

Kannst Du bitte noch mal an Hand der realen Feldnamen erklären was Du mit der Abfrage (bzw. den Abfragen) erreichen willst?
Und erkläre die weiteren Bedingungen.
Und zeige einfach mal 3-4 reale (anonyme) Datensätze über eine Exceltabelle, damit man nicht so viel nachstellen muss.