Announcement

Collapse
No announcement yet.

SELECT TOP 10 liefert alle Datensätze

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

  • SELECT TOP 10 liefert alle Datensätze

    Hallo,

    heute habe ich scheinbar meinen SQL-Dumm-Fragen-Tag

    Folgende Abfrage:
    SELECT Top 10 Materialgruppen.WieOftVerwendet, Material.Name, Material.Beschreibung
    FROM Materialgruppen, Material
    WHERE ((Materialgruppen.FK_Materialart = Materialgruppen.PK_Materialart) and (Materialgruppen.ZeigeInMaterial = true ))
    ORDER BY Materialgruppen.WieOftVerwendet DESC

    Mit dieser Formulierung werden aktuell 407 Datensätze angezeigt: Also alle auf die das zutrifft. Lasse ich jetzt den "and"-Zweig beim "WHERE" weg:

    SELECT Top 10 Materialgruppen.WieOftVerwendet, Material.Name, Material.Beschreibung
    FROM Materialgruppen, Material
    WHERE ((Materialgruppen.FK_Materialart = Materialgruppen.PK_Materialart))
    ORDER BY Materialgruppen.WieOftVerwendet DESC

    Dann erhalte ich nur die TOP 10. Allerdings halt die falsche, weil ja das zweite Kriterium fehlt. Warum liefert die erste Abfrage alle Datensätze?

    Ciao

    CodeGier

  • #2
    Ich würde es mal mit einem expliziten Join versuchen

    Comment


    • #3
      So leicht wär's gewesen

      Hallo Markus,

      jetzt habe ich Deine Gehirnzellen umsonst bemüht, sorry. Um die Top 10 zu erhalten, muß man alle Felder in die Order By Klausel mit einbeziehen:

      SELECT Top 10 Materialgruppen.WieOftVerwendet, Material.Name, Material.Beschreibung
      FROM Materialgruppen, Material
      WHERE ((Materialgruppen.FK_Materialart = Materialgruppen.PK_Materialart) and (Materialgruppen.ZeigeInMaterial = true ))
      ORDER BY Materialgruppen.WieOftVerwendet DESC, Material.Name, Material.Beschreibung

      und schon geht es. Warum nur ist mir das nicht 5 Minuten früher eingefallen?

      Ciao

      CodeGier

      Comment

      Working...
      X