Announcement

Collapse
No announcement yet.

Select mit kleinsten Wert und mehreren Feldern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Select mit kleinsten Wert und mehreren Feldern

    Hallo zusammen,

    ich habe ein Problem bei folgender Aufgabe

    in einer DB gibt es Artikeldaten die ungefähr so aussehen:

    Code:
    id      artnr    preis    lieferant  
    100     10000    24,00    500030
    101     10000    23,50    500020
    Ich brauche 2 Werte, den größten Preis und den passenden Lieferanten dazu.

    Wenn ich die Abfrage so mache bekomme ich den zwar den den Preis aber nicht den Lieferanten:

    Code:
    select max(preis) from artlief where artnr = '10000' group by artnr
    wenn ich es so mache hab ich wieder 2 Datensätze:

    Code:
    select max(preis), lieferant from artlief where artnr = '10000' group by artnr, lieferant
    Kann mir jemand sagen wie die Abfrage richtig ist?

    Gruß Nevada

  • #2
    Du musst das in 2 Schritten machen.
    Erst das Aggregat mit kleinstem /größtem Preis oder was auch immer, das nur den Preis ausspuckt.
    Ergebnis dieser Abfrage als Parameter weitere Abfragen Lieferant(Preis) usw.

    Natürlich kann man die beiden Abfragen verschachteln oder joinen. Und natürlich müssen andere Parameter mit da rein, damit nicht alle Lieferanten angezeigt werden, die ein Produkt für 4,29€ anbieten.

    Alternativ geht auch das Verfahren, die Ausgabe zu sortieren (nach Preis) und dann davon nur den ersten Datensatz zu nutzen (TOP 1, rownum<2, .. je nach db system)
    Gruß, defo

    Comment


    • #3
      select lieferant, preis from Artikeldaten as a where a.id=
      (
      SELECT id FROM Artikeldaten as b order by preis desc limit 1
      )
      Christian

      Comment


      • #4
        Danke für die schnellen Antworten. Hab es jetzt nach Preis sortiert DESC und hole mir im Array den ersten Wert.
        Mit limit geht es leider nicht da es eine MSSQL Datenbank ist

        Comment


        • #5
          Originally posted by Nevada208 View Post
          Mit limit geht es leider nicht da es eine MSSQL Datenbank ist
          Da ist es glaub ich TOP statt LIMIT.
          Gruß, defo

          Comment


          • #6
            Man muss auch nicht unbedingt sortieren und das erste nehmen. Man kann auch das Maximum des Preises nehmen

            Comment


            • #7
              Originally posted by fanderlf View Post
              Man muss auch nicht unbedingt sortieren und das erste nehmen. Man kann auch das Maximum des Preises nehmen
              Das ist mein erster Vorschlag gewesen.
              Gruß, defo

              Comment

              Working...
              X