Re: SQL-Frage für Fortgeschrittene
Geizhals » Forum » Programmierung » SQL-Frage für Fortgeschrittene (9 Beiträge, 968 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Re: SQL-Frage für Fortgeschrittene
28.02.2020, 12:32:08
Ich hab kein Oracle. Mal in Sqlite3 daran versucht. Keine Garantie auf Richtigkeit. Ich mache nur selten was mit SQL. Vielleicht ist auch ganz falsch. |-D

Einzelabfrage

Query:


SELECT MAX(menge_ab*einkaufspreis, 25*einkaufspreis) AS bestellpreis, *
FROM preislisten
WHERE artikelnr=1
ORDER BY bestellpreis ASC


Result:


bestellpreis|artikelnr|datumvon|lieferantennr|menge_ab|einkaufspreis
22.5|1|01.01.2019|L2|20|0.9
25.0|1|01.01.2019|L1|10|1.0
80.0|1|01.01.2019|L1|100|0.8


Multiabfrage aus der Tabelle "Bestellungen" (nur ein Ergebnis pro Bestellung, hab ein paar mehr Bestellungen dazuerfunden)


SELECT MIN(MAX(pl.menge_ab*pl.einkaufspreis, b.menge*pl.einkaufspreis)) as bestellpreis, *
FROM bestellungen b LEFT JOIN preislisten pl ON b.artikelnr=pl.artikelnr
GROUP BY b.rowid
ORDER BY bestellpreis ASC;


Result:


bestellpreis|artikelnr|datum|menge|artikelnr|datumvon|lieferantennr|menge_ab|einkaufspreis
10.0|1|05.02.2020|10|1|01.01.2019|L1|10|1.0
18.0|1|01.02.2020|20|1|01.01.2019|L2|20|0.9
22.5|1|02.02.2020|25|1|01.01.2019|L2|20|0.9
80.0|1|03.02.2020|100|1|01.01.2019|L1|100|0.8
640.0|1|04.02.2020|800|1|01.01.2019|L1|100|0.8



Es soll eine Liste ausgegeben werden, die zu jeder Bestellung den günstigsten Lieferanten unter Berücksichtung der Bestellmenge und jenen Lieferanten der der günstigste wäre wenn man mindestens x Stück bestellt.


Das wird ja noch verquerter. Ich hab es nur hinbekommen wenn es immer einen Lieferanten gibt, der die geforderte Stückzahl überbietet und den Stückpreis unterbietet, also ggf. per Dummy-Eintrag dies garantiert wird.

Ansonsten fallen Einträge ganz heraus wenn du das nächst-höhere Stückzahlangebot bzw. nächst-niedrigere Stückpreisangebot suchst und keins da ist. Also das ist ja vom Ansatz her Käse. Irgendwann ist es auch einfach nicht mehr sinnvoll, alles in ein Query quetschen zu wollen.

Und ein halbes Jahr später versteht das Query auch keiner mehr.

Aber vielleicht gehts ja auch viel eleganter.

Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
..  Re(2): SQL-Frage für Fortgeschrittene  (zeddicus am 28.02.2020, 21:02:56)
.  Re: SQL-Frage für Fortgeschrittene  (Psychopath am 29.02.2020, 20:13:59)
.  Re: SQL-Frage für Fortgeschrittene  (Infosauger am 04.03.2020, 15:33:59)
..  Re(2): SQL-Frage für Fortgeschrittene  (zeddicus am 04.03.2020, 21:01:10)
...  Re(3): SQL-Frage für Fortgeschrittene  (Infosauger am 10.03.2020, 14:32:56)
....  Re(4): SQL-Frage für Fortgeschrittene  (zeddicus am 10.03.2020, 15:14:46)
.  Re: SQL-Frage für Fortgeschrittene  (repugnant am 01.05.2020, 16:57:30)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung