Announcement

Collapse
No announcement yet.

INTERSECT Abfrage

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

  • INTERSECT Abfrage

    Ich habe folgendes Problem. Anscheinend kann MySQL 5.1. keine INTERSECT Abfragen verwerten. Ich bin selber ein ziemlicher neuling auf dem Gebiet der SQL Sprache.

    Hier mein Datensatz

    name;wert1;wert2
    apfel;1;3
    birne;2;6
    kirsche;3;7
    bannane;4;1

    Datensatz enthält bei mir > 1000 Einträge.

    Hier das Ziel der Abfrage:
    Sortiere das Feld "name" ein mal nach dem Feld "wert1" aufsteigend und ein mal nach dem Feld "wert2" absteigend (sollte 8 Ergebnisse des Feldes "name" ergeben); nehme nur jeweils die ersten zwei Einträge von "name"
    Suche die Doppelten Einträge des Feldes "name" in diesen vier ergebnissen und gebe sie wieder.

    Bei meiner Datenbank könnte das so aussehen:

    SELECT name
    FROM table
    WHERE 1
    ORDER BY wert1 ASC
    LIMIT 0, 2

    INTERSECT

    SELECT name
    FROM table
    WHERE 1
    ORDER BY wert2 DESC
    LIMIT 0, 2


    Aber das klappt ja nicht.
    Mit INNER JOIN kenne ich mich überhaupt nicht aus.

    Kennt jemand eine Lösung?

  • #2
    Kenn mich auch nicht aus mit INNER JOIN.... hab bisher alles so gelöst bekommen:

    Du kannst einfach mit GROUP BY zb Datensätze mit gleichem namen zusammenfassen. für die sortierung ...`wert1` ASC, `wert2` DESC.... dann halt noch das LIMIT anpassen...

    Du kannst aber auch einfach 2 getrennte Anfragen starten, wenn du zb über php auf die DB zugreifst! Das ist am Anfang einfacher und übersichtlicher (meine Meinung)

    Comment


    • #3
      Mit JOIN habe ich es nicht geschafft.
      Mir hat aber das hier weiter geholfen:

      SELECT * FROM (
      SELECT name FROM tbl WHERE 1 ORDER BY wert1 ASC LIMIT 0,2
      UNION
      SELECT name FROM tbl WHERE 1 ORDER BY wert2 DESC LIMIT 0,2
      ) AS tbl2
      GROUP BY tbl2.name HAVING COUNT(*) = 2

      Leider Spuckt er noch keine Werte aus.
      Die UNION Abfrage Funktioniert. Ich muss nur noch den Befehlt optimieren wie er nur die Doppelten Einträge aus der UNION-Tabelle ausgibt
      Denn der klappt derzeit noch nicht!

      Comment


      • #4
        DISTINCT

        ist dein Freund!

        Comment


        • #5
          Hallo,
          Originally posted by cracker0dks View Post
          DISTINCT

          ist dein Freund!
          In diesem Fall ist es wohl eher ein DISTINCT zu viel .

          Originally posted by zmk View Post
          ...Leider Spuckt er noch keine Werte aus.
          Die UNION Abfrage Funktioniert. Ich muss nur noch den Befehlt optimieren wie er nur die Doppelten Einträge aus der UNION-Tabelle ausgibt
          Denn der klappt derzeit noch nicht!
          Der UNION-Befehl beinhaltet ein implizites DISTINCT, deshalb enthält deine innere Abfrage KEINE "doppelten" Datensätze. Du solltest also besser ein UNION ALL verwenden.

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment

          Working...
          X