MySQL 5.5 - Warenwirtschaftliche Abfragen

oliverb

Mitglied
Ich habe folgende Tabelle mit mehr als 300 TSD Zeilen und 90 Lieferanten:

| ArtikelNr | Lieferanten-ArtikelNr | Lieferant | Preis | Bestand |
--------------------------------------------------------------------
| 100001 | 12374556 | 70001 | 1.00 | 1 |
| 100001 | 12323426 | 70002 | 1.10 | 2 |
| 100001 | 648302123 | 70003 | 1.13 | 1 |
| 100002 | 677123 | 70001 | 8.19 | 1 |
| 100002 | 688123 | 70009 | 2.19 | 3 |
| 100003 | 12323420 | 70001 | 6.15 | 7 |
..............

Bisher problemlos hinbekommen habe ich, per SELECT auszugeben, bei wie vielen Artikel ein Lieferant der günstigste Anbieter ist.

Aber warenwirtschaftlich und daher viel wichtiger sind - was ich bisher leider nicht hinbekommen habe – die folgenden Abfragen:

  • Bei wie vielen bzw. welchen Artikeln ist ein definierter Lieferant ALLEINIGER und GÜNSTIGSTER Anbieter? (nur er bietet diese Artikel an!)
  • Wie viele neue bzw. welche Artikel kann ich durch einen definierten Lieferanten nun anbieten (Artikel werden durch andere Lieferanten nicht angeboten und währen ohne diesen Lieferanten nicht in meinem Warenbestand!)
  • Bei wie vielen bzw. welchen Artikeln ist ein definierter Lieferant günstigster Anbieter und verdrängt einen anderen Lieferanten als günstigsten Anbieter?

Vielen Dank für Eure Mühen und Hilfe!
 
Zuletzt bearbeitet:
1+2: Ist relativ einfach. Nimm einfach alle Artikel, die nur einmal vorkommen. Und schon hast du die Daten. Diese kannst du dann entsprechen weiter verwenden
SQL:
select t.*
from tbl t
group by t.artikelnr
having count(*) = 1

3) Ermittle den kleinsten Preis von allen Artikel, die mehrfach vorkommen. Dann verknüpfe diesen mit der Auswahl über die Artikelnummer.
SQL:
select t1.*
from
    tbl t1
    inner join (
        select t2.artikelnr,  min(t2.preis) as min_preis
        from tbl t2
        group by t2.artikelnr
        having count(*) > 1
    ) g
    on t1.artikelnr = g.artikelnr
    and t1.Preis = g.min_preis
where t1.lieferant = '70001'
 

Neue Beiträge

Zurück