Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei SQL-Query gesucht

Einklappen

Neue Werbung 2019

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

  • Hilfe bei SQL-Query gesucht

    Hallo zusammen,

    ich hab hier eine etwas kniffligere Aufgabe zu bewältigen. Zuvor erstmal das Wichtigste zur betroffenen Tabelle:
    Der Einfachheit halber nenne ich hier nur die Felder der Tabelle, die mit der Abfrage zu tun haben und benenne sie um, um das Problem besser verständlich zu machen.
    Es gibt eine Tabelle mit Beiträgen, welche zu einer Diskussion zusammengeführt werden. Dabei können Beiträge entweder ein Thema oder eine Antwort auf ein Thema sein. Antworten auf Antworten gibt es nicht. Es kann aber natürlich mehrere Antworten auf ein Thema geben.
    Nennen wir die Tabelle 'Beiträge'.

    Die wichtigen Felder für die Tabelle sind:
    'Ersteller' Die ID des Benutzers, welcher den Beitrag erstellt hat.
    'Vater' Ist entweder '0' (Der Beitrag ist ein Thema) oder die ID des Themas, auf welches der Beitrag eine Antwort ist.
    'Timestamp' Zeitpunkt des Beitrags.

    Ich möchte nun folgendes Abfrage realisieren:
    "Hole die ersten 11 aller Themen, auf die es eine Antwort von Benutzer 'x' gibt und sortiere sie nach dem Erstellungszeitpunkt (neueste zuerst)."
    In anderen Worten: Ich möchte nur Themen (also Beiträge mit dem Vater '0') holen, auf die es Antworten (also Beiträge mit dem Thema als Vater) gibt.

    Die Abfrage ohne die Einschränkung der Antworten des Benutzers ist ja einfach: "SELECT * FROM `Beiträge` ORDER BY `Timestamp` DESC LIMIT 0, 11"
    Aber wie schaffe ich es nun, dass nur die Themen angezeigt werden, auf die der Benutzer geantwortet hat? Mit zwei Abfragen ist das ja machbar, indem ich mir zuerst alle Antworten des Benutzers hole und dann daraus die Abfrage für die Themen zusammenbaue. Das ist aber sicher unnötig - Es geht doch bestimmt auch in einer Abfrage, oder?

    Gruß und vielen Dank im Voraus
    garv3

  • #2
    Zitat von garv3 Beitrag anzeigen
    Das ist aber sicher unnötig - Es geht doch bestimmt auch in einer Abfrage, oder?
    Wenn ich Dich richtig verstehe - ja. Mit rekursiven Abfragen.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      indem ich mir zuerst alle Antworten des Benutzers hole und dann daraus die Abfrage für die Themen zusammenbau
      Joins sind dir ein Begriff? Du kannst auch eine Tabelle mit sich selbst joinen...

      Kommentar


      • #4
        Das hab ich auch gemerkt. Hätte nicht gedacht, dass das geht

        Danke für die Antworten!

        Kommentar

        Lädt...
        X