2016-06-14 5 views
0

ich eine Tabelle mit Informationen haben, wie: Gegenstand - VerantwortlicherMS-Access Logic, Abfrage mit Menschen auf der Ladung ändern

Dann habe ich eine andere mit Batch - Item

Eine Charge haben kann viele Gegenstände, aber jeder hat eine Person. Das heißt, eine Charge könnte am Ende viele Leute kosten ... das geht nicht, ich brauche nur eine, die mit den meisten Artikeln im Stapel.

Zuerst habe ich eine Abfrage mit Batch, Item, Person (da es andere Variablen gibt, gab es viele wiederholte Zeilen) Dann verwende ich die Zählfunktion, um nur "eindeutige" Zeilen zu haben. Als nächstes frage ich nach Charge, Person und einer Summe der Zählungen. Dann eine Charge und max der zählt. Dann habe ich es geschafft, die Summe der max zu verknüpfen (nicht SQL verwendet haben, aber wenn ich versuche, zu öffnen, es funktioniert nur in diesem Modus)

Das Problem ist: Es gibt Sachen fehlt ...

Ich habe es in Excel mit einer Kreuztabelle und einem Index Match Max Formel ... Ich brauche es, um alle zu zeigen, und wenn/wenn jemand nicht zuweisen kann, dann würde es zu einer bestimmten Person zuweisen (Ich habe einen ifehler in Excel)

Es ist ein Beispiel dafür, was ich tun möchte:

Batch - b
Artikel - i
Person - p

i1=p1  
i2=p1  
i3=p2  
i4=p3  

b1 i1 p1  
b1 i1 p1  
b1 i3 p2  

b2 i1 p1  
b2 i2 p1  
b2 i4 p3  
b2 i4 p3  
b2 i4 p3  
b2 i3 p2  

b1 i1 p1  
b1 i2 p1  
b1 ix xxx  

sollte es sein:

b1 i1 p1 
b1 i1 p1  
b1 i3 p1  

b2 i1 p3  
b2 i2 p3  
b2 i4 p3  
b2 i4 p3  
b2 i4 p3  
b2 i3 p3  

b1 i1 xxx  
b1 i2 xxx  
b1 ix xxx  

Wenn es ein "tie" es mit nicht zu jemand gehen könnte Problem überhaupt. Und wenn es einen gibt, den es nicht finden kann, dann weist er jemanden bestimmten zu.

Es könnte eine Ausnahme sein, wo, wenn es mindestens ein eigenartiges Element ist, die gesamte Charge würde jemand bestimmt ...

Ich bin noch Neuling auf Zugang zu gehen und immer noch denken, wie Excel ... kann nicht wirklich eine Lösung sehen, dass mit, was ich weiß (Abfragen, die Kriterien und einige Funktionen)

Antwort

0

eine Unterabfrage Versuchen:

SELECT Batch, Item, 
(SELECT TOP 1 Person FROM Items I2 
WHERE I2.Batch = Items.Batch 
GROUP BY I2.Batch, I2.Person 
ORDER BY Count(I2.Person) DESC) As PersonInCharge 
FROM Items 

Wenn Sie die Person Details in der gleichen Abfrage erhalten möchten ist es ein wenig mehr Komplex:

SELECT Batch, Item, Persons.PersonName 
FROM (Items INNER JOIN 
    (SELECT I3.BatchID, I3.Person 
    FROM Items AS I3 GROUP BY I3.Batch, I3.Person) AS BatchPerson 
    ON Items.Batch = BatchPerson.Batch) 
    INNER JOIN Persons ON BatchPerson.Person = Persons.Person 
WHERE (((BatchPersons.Person)= 
    (SELECT TOP 1 I2.Person 
    FROM Items I2 
    WHERE I2.Batch = Items.Batch 
    GROUP BY I2.Batch, I2.Person 
    ORDER BY COUNT(I2.Person) DESC))) 

Ich nehme einige der oben genannten Tabellen- und Feldnamen an.