Datensätze mit höchstem Wert ermitteln

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

  • Datensätze mit höchstem Wert ermitteln

    Hallo,
    ich arbeite mit MySQL und scheitere gerade.
    Ich habe eine Tabelle mit 2 Indexen. Beide zusammen haben die Eigenschaft UNIQUE.
    Erstmal ein Beispiel, wie die Tabelle aussehen könnte:
    [FONT=courier new][color=darkblue]
    id1  id2  Textfeld
    -------------------
    1    [color=red]1[/color]    blabla
    2    1    ...
    2    2    ...
    2    [color=red]3[/color]    ...
    3    1    ...
    3    [color=red]2[/color]    ...
    4    1    ...
    4    2    ...
    4    3    ...
    4    [color=red]4[/color]    ...
    [/color][/FONT]
    Nun möchte ich die Felder mit dem höchsten Wert von id2 innerhalb der gleichen id1 abfragen (rot).

    Grundlegend soll die Abfrage also so aussehen:
    [FONT=courier new][color=darkblue]SELECT * FROM tabelle WHERE Textfeld like '%blabla%' AND ..... [id2 am höchsten] [/color][/font]

    Habe schon einiges versucht, aber MySQL bietet scheinbar (zumindest habe ich nix gefunden) keine Funktion, um im WHERE-Bereich den höchsten Wert eines Feldes abzufragen.

    Die Funktion MAX() hilft mir auch nicht, da ich in Verbindung mit MAX() im SELECT-Bereich keine weiteren Felder auslesen kann. (z.B. [FONT=courier new][color=darkblue]SELECT MAX(id2), Textfeld FROM tabelle ... [/color][/font]geht nicht)

    Und - der Sinn und Zweck dieser Geschichte ist erstmal Nebensache.

    Danke schon mal im Vorfeld.
    Zuletzt geändert von mkJack; 01.12.2003, 12:24.
    Immer erst mal gucken, ob Benzin im Tank ist ...

  • #2
    Was sind bei dir "normale" Felder?

    Mit MAX() kannst du nur den höchsten Wert aus einer Spalte vom Typ integer auslesen.

    Du könntest aber die Suche nach dem Max--Wert weglassen und stattdessen nach dieser Spalte sortieren und mit LIMIT 1 nur den ersten Datensatz ausgeben lassen.

    Also so:
    PHP-Code:
    SELECT FROM tabelle WHERE Textfeld like '%blabla%' ORDER BY id2 DESC LIMIT 1 
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Hilft mir nix, da ich ja mit [font=courier][color=darkblue]... WHERE Textfeld like '%blabla%' ... [/color][/font] alle gefundenen Datensätze bekommen möchte.
      Immer erst mal gucken, ob Benzin im Tank ist ...

      Kommentar


      • #4
        Re: Datensätze mit höchstem Wert ermitteln

        Original geschrieben von mkJack
        Die Funktion MAX() hilft mir auch nicht, da ich in Verbindung mit MAX() im SELECT-Bereich keine weiteren Felder auslesen kann. (z.B. [FONT=courier new][color=darkblue]SELECT MAX(id2), Textfeld FROM tabelle ... [/color][/font]geht nicht)
        Warum soll das nicht gehen?
        Das geht nur solange nicht, wie keine Bedingung GROUP BY enthalten ist.

        PHP-Code:
        SELECT MAX(id2), Textfeld FROM tabelle WHERE Textfeld like '%blabla%' GROUP BY id1
        if ($getraenk=="kein kaffee mehr da" && $verlangen=="gross") { $arbeitsmoral="im keller"; }

        Kommentar


        • #5
          Das könnte mir evtl. weiterhelfen ...
          Immer erst mal gucken, ob Benzin im Tank ist ...

          Kommentar


          • #6
            Nein, hat mir nicht geholfen.
            Bringt nicht das gewünschte Ergebnis.
            Nimmt zwar die grösste id2, aber der Rest des Datensatzes stimmt nicht mit dem überein, das in der Zeile der grössten id2 steht ... *grmfff*
            Immer erst mal gucken, ob Benzin im Tank ist ...

            Kommentar

            Lädt...
            X