1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Tabellenabfrage in sich selbst

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von empea, 17 Oktober 2019.

  1. empea

    empea Neuer Benutzer

    Ich möchte über die Spalte "Suche" alle Einträge finden, die über die Spalte "Verbindung" miteinander verbunden werden. Suche = "E" findet also die Verbindung(en) 2 und 4. Meine Abfrage (Suche = E) soll nun die Zeilen 4, 5,6, 10, 11, 12, 13 (siehe Tabelle).

    Meine Idee war

    SELECT * FROM tabelle AS T INNER JOIN tabelle AS TA T.nr = TA.verbindung WHERE t.suche = E

    Leider führt diese Abfrage zu 0 Ergebnissen. Vielen Dank für eure Hilfe :)

    upload_2019-10-17_10-22-51.png
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Code:
    andreas@[local]:5432/test# select * from empea ;
     nr | verb | suche
    ----+------+-------
      1 |    1 | a
      2 |    1 | b
      3 |    1 | c
      4 |    2 | d
      5 |    2 | e
      6 |    2 | f
      7 |    3 | g
      8 |    3 | h
      9 |    3 | i
     10 |    4 | e
     11 |    4 | a
     12 |    4 | b
     13 |    4 | c
    (13 rows)
    
    andreas@[local]:5432/test# with v as (select verb from empea where suche = 'e') select * from empea where verb in (select * from v);
     nr | verb | suche
    ----+------+-------
      4 |    2 | d
      5 |    2 | e
      6 |    2 | f
     10 |    4 | e
     11 |    4 | a
     12 |    4 | b
     13 |    4 | c
    (7 rows)
    
    andreas@[local]:5432/test#
    
    als einer von vielen Wegen ...
     
  3. empea

    empea Neuer Benutzer

    Vielen Dank für die schnelle Antwort. PHPMyAdmin möchte mir leider keine Ausgabe liefern, da der Typ "WITH" nicht erkannt wird (und nach meiner Recherche nicht mehr unterstützt wird). Gibt es einen alternativen Befehl, der einfach an die Stelle gesetzt werden kann? Wenn nicht, bin ich für einen weiteren Weg sehr dankbar. LG
     
  4. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Wechsel zu PostgreSQL

    PostgreSQL ist ebenfalls kostenlos zur verfügung gestellt, jedoch weitaus mächtiger ;)

    Was mir bei meinem bisherigem Weg als Pro für PostgreSQL entgegenkam:

    1.: Eigene Typen definieren
    2.: Range Typen existieren
    3.: Exclusion Constraints
    4.: Recursive Abfragen (With Querys)

    und natürlich bei weitem mehr.
    PostgreSQL
    damit ich dich auch direkt dorthin verlinke ;)

    Habe quasi ALLES von SQL gelernt, was ich heute kann, in diesem Forum.
     
  5. akretschmer

    akretschmer Datenbank-Guru

    WITH ist kein Typ, sondern eine Abfragemöglichkeit, die MySQL noch nicht kann. Du kannst das umstellen in ein Subselect, aus WITH x AS (...) SELECT ... FROM X kannst Du auch sagen: SELECT ... FROM (hier das aus der ersten Klammer rein) AS x WHERE ...

    Davon abgesehen: siehe die Antwort von unserem Kampfgummi ;-)
     
  6. Walter

    Walter Administrator Mitarbeiter

Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden