Sortierung von Rechnerergebnissen via MySQL möglich?

Sortierung von Rechnerergebnissen via MySQL möglich?

am 26.12.2006 15:47:55 von Mario Ramseier

Hallo zusammen

Ich bräuchte da externen Input zu folgender Problemstellung:

Mengen werden mit Preisen verschiedener Anbieter multipliziert. Nun möchte
ich das Ergebniss aber noch sortieren, der günstigste bis zum teuersten.

Beispiel:
User stellt sich zusammen
4x A
2x B
1x C

Nun habe ich in einer separaten Tabelle jeweils pro Anbieter die Information
wieviel A, B und C kosten, im Anzeigescript zähle ich mit PHP die einzelnen
Posten zusammen und weise ein Gesamtpreis pro Anbieter aus. Den User
interessiert aber natürlich primär der günstigste Anbieter seiner
Produktezusammenstellung.

Ich habe mal die Lösung über eine temporäre Tabelle angedacht, dann rechne
ich aber zuerst alles durch und müsste es nachher wieder auslesen, evt. hat
da jemand einen besseren Vorschlag?

Grüsse

Re: Sortierung von Rechnerergebnissen via MySQL möglich?

am 28.12.2006 08:58:07 von Thomas Huth

Hallo Mario,

Mario Ramseier schrieb:

> Hallo zusammen
>
> Ich bräuchte da externen Input zu folgender Problemstellung:
>
> Mengen werden mit Preisen verschiedener Anbieter multipliziert. Nun möc=
hte
> ich das Ergebniss aber noch sortieren, der günstigste bis zum teuersten.
>
> Beispiel:
> User stellt sich zusammen
> 4x A
> 2x B
> 1x C
>
> Nun habe ich in einer separaten Tabelle jeweils pro Anbieter die Informat=
ion
> wieviel A, B und C kosten, im Anzeigescript zähle ich mit PHP die einze=
lnen
> Posten zusammen und weise ein Gesamtpreis pro Anbieter aus. Den User
> interessiert aber natürlich primär der günstigste Anbieter seiner
> Produktezusammenstellung.
>
> Ich habe mal die Lösung über eine temporäre Tabelle angedacht, dann=
rechne
> ich aber zuerst alles durch und müsste es nachher wieder auslesen, evt.=
hat
> da jemand einen besseren Vorschlag?
>

Leider verstehe ich das Problem nicht ganz. Was ist denn A, B, C?
Verschiedene Produkte?
Wie sehen denn die Tabellen aus, in denen die Stammdaten (Artikel,
Anbieter, Preise) stehen?

Gruß
Thomas

Re: Sortierung von Rechnerergebnissen via MySQL möglich?

am 28.12.2006 09:34:23 von Heiko Richler

Hallo Mario,

> Mengen werden mit Preisen verschiedener Anbieter multipliziert. Nun möchte
> ich das Ergebniss aber noch sortieren, der günstigste bis zum teuersten.

Wo wird das gemacht?

> Nun habe ich in einer separaten Tabelle jeweils pro Anbieter die Information
> wieviel A, B und C kosten, im Anzeigescript zähle ich mit PHP die einzelnen
> Posten zusammen und weise ein Gesamtpreis pro Anbieter aus.

Mach das doch im SQL-Ausdruck. ...

> Den User
> interessiert aber natürlich primär der günstigste Anbieter seiner
> Produktezusammenstellung.

.... Dann kannst Du im SQL-Ausdruck order by nutzen.

> Ich habe mal die Lösung über eine temporäre Tabelle angedacht, dann rechne
> ich aber zuerst alles durch und müsste es nachher wieder auslesen, evt. hat
> da jemand einen besseren Vorschlag?

Eine Temporäre Tabelle kann sinnvoll sein. Zum Befüllen und Abfragen SQL
nutzen und die Datenbank macht die Arbeit.

Heiko
--
http://portal.richler.de/ Namensportal zu Richler
http://www.richler.de/ Heiko Richler: Computer - Know How!
http://www.richler.info/ private Homepage

Re: Sortierung von Rechnerergebnissen via MySQL möglich?

am 28.12.2006 16:22:57 von Mario Ramseier

Hallo Thomas

"Thomas Huth" schrieb im Newsbeitrag
news:1167292687.576265.23250@73g2000cwn.googlegroups.com...
Hallo Mario,

Mario Ramseier schrieb:

> Hallo zusammen
>
> Ich bräuchte da externen Input zu folgender Problemstellung:
>
> Mengen werden mit Preisen verschiedener Anbieter multipliziert. Nun möchte
> ich das Ergebniss aber noch sortieren, der günstigste bis zum teuersten.
>
> Beispiel:
> User stellt sich zusammen
> 4x A
> 2x B
> 1x C
>
> Nun habe ich in einer separaten Tabelle jeweils pro Anbieter die
Information
> wieviel A, B und C kosten, im Anzeigescript zähle ich mit PHP die
einzelnen
> Posten zusammen und weise ein Gesamtpreis pro Anbieter aus. Den User
> interessiert aber natürlich primär der günstigste Anbieter seiner
> Produktezusammenstellung.
>
> Ich habe mal die Lösung über eine temporäre Tabelle angedacht, dann rechne
> ich aber zuerst alles durch und müsste es nachher wieder auslesen, evt.
hat
> da jemand einen besseren Vorschlag?
>

>Leider verstehe ich das Problem nicht ganz. Was ist denn A, B, C?
>Verschiedene Produkte?
>Wie sehen denn die Tabellen aus, in denen die Stammdaten (Artikel,
>Anbieter, Preise) stehen?


Richtig A,B,C sind die Produkte, z.B.

A=Schirm
B=Auto
C=Koffer

Nun gibt es eine Tabelle in welchem die Anbieter gespeichert sind (z.B.
Aldi, Coop, etc.)
Dann gibt es eine Tabelle in welcher drinsteht welcher Anbieter welche
Artikel besitzt (wobei das hier nicht relevant ist).
Und dann gibt es noch eine Tabelle in welcher die Preise drinstehen, im Stil
"AnbieterID, Produkt, Preis, Datum"

Mein Problem ist nun dass z.B. Anbieter 1 günstiger sein kann bei 2x Produkt
A, wenn der Kunde aber 2x Produkt B und 1x A abfragt sind die Gesamtkosten
von Anbieter A dann u.U. höher als diese von B. Da ich die Berechnung Menge
X Preis aber erst auf Scriptebene mache kann ich ja nicht nach Gesamtkosten
sortieren da ich diese vor Ausgabe nicht weiss. Ausser eben ich lasse alles
durchlaufen, schreibe die Gesamtkosten in eine temp. Tabelle und mache dann
die gesamte Ausgabe, von der Performance her scheint mir diese Lösung aber
nicht ideal.

grüsse

Re: Sortierung von Rechnerergebnissen via MySQL möglich?

am 28.12.2006 16:34:38 von Mario Ramseier

Salü

"Heiko Richler" schrieb im Newsbeitrag
news:emvvih$671$1@news1.nefonline.de...
> Hallo Mario,
>
> > Mengen werden mit Preisen verschiedener Anbieter multipliziert. Nun
möchte
> > ich das Ergebniss aber noch sortieren, der günstigste bis zum teuersten.
>
> Wo wird das gemacht?

Auf Scriptebene, ich gehe alle Anbieter durch via While Schleife, dort lese
ich dann den jeweiligen Preis aus und berechne das Zeilentotal und anhand
aller Zeilen die Totalkosten pro Anbieter.

> > Nun habe ich in einer separaten Tabelle jeweils pro Anbieter die
Information
> > wieviel A, B und C kosten, im Anzeigescript zähle ich mit PHP die
einzelnen
> > Posten zusammen und weise ein Gesamtpreis pro Anbieter aus.
>
> Mach das doch im SQL-Ausdruck. ...

Das Problem ist dass die Produkte in einem Array gespeichert sind, meines
Wissens kann den ja die DB nicht auseinander nehmen...

>
> > Den User
> > interessiert aber natürlich primär der günstigste Anbieter seiner
> > Produktezusammenstellung.
>
> ... Dann kannst Du im SQL-Ausdruck order by nutzen.

Klar, aber ich weiss ja nicht wie die Zusammenstellung der Produkte und
folglich der Gesamtpreis ist, das ist pro Abfrage individuell und den
Gesamtpreis habe ich nirgends gespeichert.

grüsse

Re: Sortierung von Rechnerergebnissen via MySQL möglich?

am 29.12.2006 12:21:34 von Heiko Richler

Hallo Mario,

> Klar, aber ich weiss ja nicht wie die Zusammenstellung der Produkte und
> folglich der Gesamtpreis ist, das ist pro Abfrage individuell und den
> Gesamtpreis habe ich nirgends gespeichert.

Wenn Du das Ergebnis als Array im Speicher hast, kannst Du es mit usort
sortieren. Es gibt noch ein paar andere Funktionen zum sortieren, musst
mal sehen was Deine Anforderungen erfüllt.
vgl. http://de2.php.net/manual/de/function.usort.php

Heiko
--
http://portal.richler.de/ Namensportal zu Richler
http://www.richler.de/ Heiko Richler: Computer - Know How!
http://www.richler.info/ private Homepage

Re: Sortierung von Rechnerergebnissen via MySQL möglich?

am 30.12.2006 16:31:09 von Mario Ramseier

"Heiko Richler" schrieb im Newsbeitrag
news:en2to6$qil$1@news1.nefonline.de...

> > Klar, aber ich weiss ja nicht wie die Zusammenstellung der Produkte und
> > folglich der Gesamtpreis ist, das ist pro Abfrage individuell und den
> > Gesamtpreis habe ich nirgends gespeichert.
>
> Wenn Du das Ergebnis als Array im Speicher hast, kannst Du es mit usort
> sortieren. Es gibt noch ein paar andere Funktionen zum sortieren, musst
> mal sehen was Deine Anforderungen erfüllt.
> vgl. http://de2.php.net/manual/de/function.usort.php

Also schlägst du vor alle Anbieter durchzurechnen, den Gesamtpreis in einen
Array zu stellen, diese dann zu sortieren und dann die Berechnungen nochmals
laufen zu lassen? Wie gesagt, der Gesamtpreis, nach welchem im sortiere,
ermittle ich erst während der Scriptlaufzeit.

Grüsse

Re: Sortierung von Rechnerergebnissen via MySQL möglich?

am 04.01.2007 09:18:25 von Heiko Richler

Hallo Mario,

> Also schlägst du vor alle Anbieter durchzurechnen, den Gesamtpreis in einen
> Array zu stellen, diese dann zu sortieren und dann die Berechnungen nochmals
> laufen zu lassen? Wie gesagt, der Gesamtpreis, nach welchem im sortiere,
> ermittle ich erst während der Scriptlaufzeit.

Nein, wenn es nicht notwendig ist, würde ich den Preis nicht erneut
ausrechnen.

Unterscheiden sich die Priese zwischen den Berechnungen? Weshalb
solltest Du die Beträge zwei mal ausrechnen?

Wenn Du die Werte Sortiert in einem Array hast, kannst Du sie ausgeben.

Heiko
--
http://portal.richler.de/ Namensportal zu Richler
http://www.richler.de/ Heiko Richler: Computer - Know How!
http://www.richler.info/ private Homepage