SQL Abfrage von einer Seriennummer mit einer bestimmten Menge

AccAkut

Grünschnabel
Guten Abend,

ich habe folgendes Abfrageproblem:

Ich habe ein Produkt, welches an meheren Stationen gescannt werden kann. Diese Stellen werden eindeutig mit einer ID versehen. z.B. Vorne ID=10, Mitte ID=20, hinten ID=40 ...
So taucht das Produkt in der Tabelle logischer weise mehrfach auf.
Ich möchte mir jetzt nur die Produkte anzeigen lassen, die an allen Scannern eingelesen worden. Sprich bei 5 Scanner müsste das Produkt im besten Fall auch 5 mal vorliegen...

Vielen Dank für die Hilfe!
 
Hallo,
leider hast Du diesen Hinweis im Forum übersehen: "Bitte immer das Datenbanksystem bei den Fragen im Titel angeben"

Da ich nicht weiß, welches Datenbanksystem Du verwendest, versuche ich's mal mit einer wahrscheinlich allgemein gültigen Version. (ungetestet!)

SELECT produkt FROM Tabelle GROUP BY produkt HAVING COUNT(*) = 5

Bildet für jedes Produkt eine Gruppe und zeigt nur diejenigen die fünfmal vorkommen.

... HAVING COUNT(*) < 5 zeigt alle Produkte die nicht überall gescannt wurden.

mfg
 
Ach so, ich verwende Microsoft SQL Server 2005 in Verbindung mit .NET

Der Count Befehl stimmt, aber so wird doch nicht sichergestellt, dass das Produkt an jeder der 5 Station auch war. Könnte ja auch sein, dass ein Produkt 5 mal an dem ersten Scanner gelesen wurde. Und zack hast du den Salat.

Trotzdem schon mal vielen Dank!
 
Zuletzt bearbeitet:
Hallo,

:offtopic: stimmt, aber Salat ist doch lecker.:offtopic:

Mit einem einfachen SQL kommst du da nicht weiter.
Aber so geht es:
Code:
SELECT     Produkt, COUNT(*) AS Anzahl
FROM         (SELECT     COUNT(*) AS Anzahl, Produkt, Stelle
                       FROM          Tabelle
                       GROUP BY Produkt, Stelle) AS Tab1
GROUP BY Produkt
HAVING      (COUNT(*) = 5)
Das bedeutet aber, das sich die Anzahl der Stellen nicht ändert.
 
Hey Bernd,
noch mal vielen dank für deinen Vorschlag!
Läuft im Prinzip ja auch tadelos, aber im laufenden Betrieb habe ich festgestellt, dass es leider nicht ausreichd' Die IDs zu zählen.
Es müssen genau die IDs 10,20,40,50 sein. Der Grund ist, dass das es noch nen 23 und 24 gibt aber die nicht mit eigehen dürfen :-(

Hast du /habt ihr dazu noch ein Vorschlag? Sitz schon die ganze zeit an den verschiedensten Where Abfragen aber das t noch net...

Vielen Dank .
 
Zuletzt bearbeitet:
Hallo,
schau dir mal das In Statement von SQL an. Als Beispiel:

Code:
SELECT * FROM Produkt_Informationen
WHERE produkt_id IN ('10', '20', '30', '40', '50')

Tabelle Produkt_Informationen:
produkt_id anzahl preis
10 500 200
12 200 600
20 600 150
30 450 50
33 398 65
40 300 190
50 350 250

Ergebnis:
produkt_id anzahl preis
10 500 200
20 600 150
30 450 50
40 300 190
50 350 250
 
Hallo Jungs,


also nach langem hin und her Prüfen (hab einfach nur schiss das mir Daten durch die Lappen gehen) komme ich zu dem Entschluss, dass man den letzten Beitrag sehr gut mit dem anderen kombinieren kann, dies aber nicht zwingend notwendig ist, da das Ding bei mir genau das selbe Ergebnis ausspuckt.
Mir kam die Anzahl nur zu gering vor, aber ich akzeptier das jetzt einfach so, bis mir irgendjemand das Gegenteil beweist.

Das zeigt mir auf jeden Fall sehr deutlich, dass es sau schwierig ist, seine ganzen tollen ausgedachten Abfragen auf Richtigkeit zu überprüfen....

so on vielen vielen Dank
 

Neue Beiträge

Zurück