Abfrage OrderID,ArtikelID,BestbeforeDate

ZZEEZZ

Neuer Benutzer
Beiträge
3
Hallo, ich habe ein Problem mit einer Abfrage die ich nicht wirklich hinbekomme.

Ich soll herausfinden ob Artikel in der gleichen Order(OrderID) möglicherweise verschiedene MHDS haben(was nicht passieren sollte).

Hier ein Beispiel:
lieferantOrderIDArtikelIDBestbeforeDate
1​
122​
10.10.2023​
1​
122​
10.10.2023​
1​
122​
10.10.2023​
1​
122​
10.10.2023​
1​
122​
10.10.2023​
1​
122​
15.08.2024​
1​
155​
20.10.2023​


Die ArtikelID 122 sollte in der gleichen Order immer das gleiche MHD haben(BestbeforeDate).
Dazu habe ich zuerst folgende Abfrage gemacht:

SELECT lop.lieferantOrderID,Count(distinct (lop.artikelID)) as SummeverschiedenerArtikel, Count(distinct(lop.bestbeforedate)) as SummeverschiedenerMHDS
FROM tbl_lieferantOrderPos lop
WHERE lop.bestbeforedate IS NOT NULL
group by lop.lieferantOrderID


Die Logik ist jedoch falsch, da verschiedene Artikel einer Order das gleiche MHD haben können und es somit nicht eindutig ist.


Könnte mir Jemand weiterhelfen?
 
Werbung:
du hast und suchst:

Code:
postgres=# select * from zzeezz ;
 artikel | best_before 
---------+-------------
     122 | 2022-10-10
     122 | 2022-10-10
     122 | 2022-10-10
     122 | 2022-10-20
     123 | 2022-10-20
     123 | 2022-10-20
(6 rows)

postgres=# select artikel, count(distinct best_before) from zzeezz group by artikel order by artikel;
 artikel | count 
---------+-------
     122 |     2
     123 |     1
(2 rows)

postgres=# select artikel, count(distinct best_before) from zzeezz group by artikel having count(distinct best_before) > 1 order by artikel;
 artikel | count 
---------+-------
     122 |     2
(1 row)
 
du hast und suchst:

Code:
postgres=# select * from zzeezz ;
 artikel | best_before
---------+-------------
     122 | 2022-10-10
     122 | 2022-10-10
     122 | 2022-10-10
     122 | 2022-10-20
     123 | 2022-10-20
     123 | 2022-10-20
(6 rows)

postgres=# select artikel, count(distinct best_before) from zzeezz group by artikel order by artikel;
 artikel | count
---------+-------
     122 |     2
     123 |     1
(2 rows)

postgres=# select artikel, count(distinct best_before) from zzeezz group by artikel having count(distinct best_before) > 1 order by artikel;
 artikel | count
---------+-------
     122 |     2
(1 row)


Hallo, danke für die Antwort.

Artikel können jedoch nach OrderID verschieden MHD's haben, soweit ich das nicht verstehe wird das in der Abfrage nicht berücksichtigt oder?
 
da in Deinem Beispiel OrderID immer 1 war, habe ich diese weggelassen. Die Abfrage passend zu erweitern überlasse ich Dir zur Übung.
 
Werbung:
Select lop.lieferantOrderID,lop.ArtikelID, count(distinct lop.bestbeforedate)
FROM tbl_lieferantOrderPos lop
WHERE lop.BestBeforeDate IS NOT NULL
GROUP BY lop.lieferantOrderID, lop.artikelID
Order by lop.artikelID


Meinst du das haut so hin von der Logik?

Sinn ist es jeden Artikel bei jeder Order einzelnd zu betrachten d.h. es könnten 10000 Bestellungen mit der gleichen ArtikelID ausgegeben werden und das wäre richtig solange der count 1 ist.
 
Zurück
Oben