Abfrage (3 Tabellen) mit jeweiligen Maximalwert

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage (3 Tabellen) mit jeweiligen Maximalwert

    Hallo erstmal...

    Ich möchte eine Abfrage erstellen, in der jeder Artikel zu dem mindestens ein Preis in der Tabelle Preise
    definiert ist einmal ausgegeben wird. Zu dem Artikel soll dann aus der Tabelle Preise der kleinste Preis
    ausgeben werden und aus der Tabelle User der entsprechende User zu dem Preis.

    Das sind die Tabellen (vereinfacht):
    Tabelle User (user_id, user_name)
    Tabelle Artikel (artikel_id, artikel_bez)
    Tabelle Preise (preis_id, artikel_id, user_id, preis_betrag)

    Das ist meine bisherige Abfrage. Artikel und dazugehöriger Preis werden richtig angezeigt,
    allerdings wird nicht der richtige User dazu ausgegeben
    Code:
    SELECT a.artikel_bez, min(p.preis_betrag ) , u.user_name
    FROM Preise p
    INNER  JOIN Artikel a ON p.artikel_id = a.artikel_id
    INNER  JOIN User u ON p.user_id = u.user_id
    GROUP  BY a.artikel_id, a.artikel_bez
    Zuletzt geändert von LMS; 18.11.2005, 05:01.

  • #2
    /edit: Dachte den Fehler gefunden zu haben, aber es wird bei einigen Artikel immer noch der falsche Benutzer aber richtige Preis angezeigt

    Weiss keiner Rat?
    Zuletzt geändert von LMS; 18.11.2005, 01:38.

    Kommentar


    • #3
      Kann man Eintragungsfehler in der DB selbst in den Werten auschließen?

      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
      sondern mit den Augen das Manual zu lesen.

      Kommentar


      • #4
        Hi,
        ja, das hatte ich extra nachmal überprüft und alles neu erstellt, aber nach einigen tests hab ich bemerkt, dass es daran nicht liegen kann. müsste die abfrage denn so richtig sein?

        Kommentar


        • #5
          An für sich schon, jedoch denk ich mal, dass "User" stören könnte... versuchs mal mit `User` :

          Code:
          SELECT a.artikel_bez, min(p.preis_betrag ) , u.user_name
          FROM Preise p
          INNER  JOIN Artikel a ON p.artikel_id = a.artikel_id
          INNER  JOIN `User` u ON p.user_id = u.user_id
          GROUP  BY a.artikel_id, a.artikel_bez

          Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
          sondern mit den Augen das Manual zu lesen.

          Kommentar


          • #6
            Nein, ich habe die Tabellen hier in vereinfachten Namen geposted. Ich möchte so einen Select an 2 verschiedenen Tabellen ausführen. Ich teste das 'durch zufall' im anderen Fall zuerst (werd ich später beachten müssen). In diesem Fall ist statt der Tabelle Preis, die Tabelle Forschung und statt User die Tabelle Firmen.

            web2.confixx.pro-webhoster.de/kapitools/index.php?action=toptechs

            Hier kann man sich das Ergebniss der Abfrage anschauen. Überall wo die Qualität = 11 ist, müsste eigentlich "test" stehen und nicht "LMS GmbH". Dort wo "test" steht ist kein Eintrag für LMS GmbH vorhanden.

            /edit: wenn ich den jeweiligen Eintrag für LMS GmbH lösche, wird "test" angezeigt. Das sollte ja auch einen Datenbankfehler ausschliessen.

            //edit: Und hier ist es MAX(Qualitaet) statt MIN(Preis)
            Zuletzt geändert von LMS; 18.11.2005, 07:19.

            Kommentar

            Lädt...
            X