[MySql] Mit Group By bestimmten Datensatz ermitteln

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

  • [MySql] Mit Group By bestimmten Datensatz ermitteln

    Hallo Leute,

    die Überschrift ist nicht so richtig aussagekräftig aber ich weiß ned wie ichs besser formulieren könnte

    Mein Problem:

    Ich hab folgende Tabelle:
    1212 - 1 - 5
    1212 - 2 - 2
    3120 - 2 - 7
    3120 - 3 - 3

    Nun möchte ich für jeden Wert der ersten Spalte (also 1212 und 3120) den Wert aus Spalte 3 ermitteln wo Spalte 2 den kleinsten Wert enthält. Die Abfrage soll also liefern:
    1212 5
    3120 7

    Ich glaub ich würd hier nur über ein SubSelect hinkommen, was mir leider verwehrt ist, weil mein Provider mir nur MySql 4.0.15 zur Verfügung stellt.

    Gibts irgendeinen Trick wie ich zum gewünschten Ergebnis komm??

    Wenn ich die komplette Tabelle abfrage könnte ich dann natürlich mit PHP schon zum gewünschten Ergebnis kommen, aber das wäre wenig performant
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

  • #2
    warum lässt du dir nicht für jeden wert aus spalte 1 den kleinsten wert aus spalte 2 liefern (1. abfrage) und fragst dann damit die tabelle nochmal ab (2. abfrage)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      lies im manual über minimum dann noch gruppieren und fertig
      EDIT:
      hab die frage nich ganz gelesen
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        Das funktioniert eh nicht ... aber mit 'nem LEFT JOIN geht's ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          @mrhappiness

          dazu müsst ich ja für jedes Ergebniss die Tabelle ein zweites Mal abfragen, bei ca. 10000 unterschiedlichen Werten aus Spalte 1 wären das ja 10000 weitere abfragen.

          @MelloPie

          ganz daneben steh ich ja nun auch wieder ned , mit Group BY und min() bekomm ich zwar den kleinsten Wert aus Spalte 2, aber nicht den dazugehörigen aus Spalte 3
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            Deshalb sage ich ja LEFT JOIN ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              @goth

              mit nem LEFT JOIN??? ich arbeite ja nur auf einer Tabelle, wie kann ich da LEFT JOIN einsetzen??

              EDIT:
              kann man auch auf die gleiche Tabelle verweisen?? *kopfkratz*
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                Indem Du die Tabelle noch einmal verwendest ... und die abfrage so formulierst, im rechten Teil kein Datensatz gefunden wird ... !
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  indem du die tabelle zweimal verwendest

                  FROM datenbank eigentlich_bin_ich
                  LEFT JOIN datenbank eine_tabelle

                  ach ja:
                  du brauchst nur zwei abfragen mit meiner methode, könntest dir ja mal implode anschauen...
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Nur mal so als Denkansatz:

                    Code:
                    SELECT t1.spalte1, t1.spalte3
                      FROM Tabelle t1
                      LEFT JOIN Tabelle t2
                        ON t1.spalte1 = t2.spalte1
                       AND t1.spalte2 > t2.spalte2
                     WHERE t2.spalte1 IS NULL
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      Ihr Antwortet ja sehr schnell hier, komm kaum mit, vielen Dank hierfür

                      also mit dem LEFT JOIN könnts wohl hinkommen, hab nie daran gedacht eine Tabelle zweimal zu verwenden.


                      mit Implode();??? hmm.... ist das sinnvoll 10000 Bedingungen in eine WHERE-Klausel zu packen??
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        Original geschrieben von Quetschi
                        mit Implode();??? hmm.... ist das sinnvoll 10000 Bedingungen in eine WHERE-Klausel zu packen??
                        Nicht wirklich ... allerdings geht's mit IN(1,2,...) ganz nett ... !
                        carpe noctem

                        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                        Kommentar


                        • #13
                          Original geschrieben von goth
                          Nicht wirklich ... allerdings geht's mit IN(1,2,...) ganz nett ... !
                          Wobei du in deinem IN ja irgendwie zwei Bedingungen miteinander kombinieren müsstest

                          spalte1 = 5
                          minimum in spalte 2 dazu = 4

                          spalte1 = 7
                          minimum in spalte2 dazu = 3


                          zweite abfrage:
                          WHERE spalte1 IN (5,7) AND spalte2 IN (4, 3)

                          Meindest du so?
                          Was passiert bei der Kombination spalte1 - spalte2 = 7 - 4?
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            Ich gebe zu ... das:
                            Code:
                            WHERE (spalte1,spalte2) IN ((1212,1),(3120,2))
                            geht erst mit MySQL 4.1.x ...
                            carpe noctem

                            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                            Kommentar


                            • #15
                              Also das Beispiel von Goth war schon mehr als nur ein Denkansatz, das war gleich die ganze Lösung, so bekomm ich genau die Datensätze die ich wollte
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X