Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] SQL: 2 verschiedene Daten vom gleichen Attribut

Einklappen

Neue Werbung 2019

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

  • [Erledigt] SQL: 2 verschiedene Daten vom gleichen Attribut

    Guten Morgen,

    ich stehe als Anfänger vor folgendem Problem und komme einfach auf keine Lösung.

    Folgendes Problem:
    Ich habe eine Tabelle "Main", eine Tabelle "Main-Zuordnung" und "Beschreibung".

    In der Tabelle Beschreibung sind in einem Attribut alle Beschreibungen zusammengefasst. Das heißt ich greife mit der Tabelle Main über die Tabelle Main-Zuordnung auf die Beschreibung zu, und ein weiteres Mal direkt von Main auf Beschreibung um einen anderen Wert zu erhalten.

    Main-> Main-Zuordnung -> Beschreibung (Beschreibungstext A)

    Main-> Beschreibung (Beschreibungstext B) hoffe das war soweit verständlich.

    Greife ich einzeln auf das Feld zu gibt es keine Probleme, aber beide Werte auszugeben funktioniert nicht, da ich nicht zweimal auf das gleiche Ziel von unterschiedlichen Quellen joinen kann.

    Hier mal das Beispiel (ein Wert/direkt):
    Code:
    SELECT 
      tabelle_beschreibung.kurztext as "Beschreibungstext A"
    FROM 
      tabelle_beschreibung, 
      tabelle_main
    WHERE 
      tabelle_main.kategorieID = tabelle_beschreibung.fsid;
    Und (ein Wert/zweiter Weg)
    Code:
    SELECT 
      tabelle_beschreibung.kurztext as "Beschreibungstext B"
    FROM 
      tabelle_beschreibung, 
      tabelle_main_zuordnung,
      tabelle_main
    WHERE 
      tabelle_main.ID = tabelle_main_zuordnung.mainID AND
      tablle_main_zuordnung.ID = tabelle_beschreibung.fsid
    Ich habe schon versucht beide Abfragen mit UNION zu Verknüpfen, dann schreibt er mir aber die Werte von Beschreibungstext B in die Spalte von A mit hinein, sie sollen aber in einer seperaten Spalte simultan stehen.

    Habe folgendes auch probiert:

    Code:
    SELECT
    tabelle_beschreibung.kurztext as "Beschreibungstext A"
    
    (SELECT 
      tabelle_beschreibung.kurztext
    FROM 
      tabelle_beschreibung, 
      tabelle_main_zuordnung,
      tabelle_main
    WHERE 
      tabelle_main.ID = tabelle_main_zuordnung.mainID AND
      tablle_main_zuordnung.ID = tabelle_beschreibung.fsid
      ) as "Beschreibungstext B"
    
      FROM
      tabelle_beschreibung, 
      tabelle_main_zuordnung,
      tabelle_main
    
      WHERE
    
      tabelle_main.kategorieID = tabelle_beschreibung.fsid;
    Würde funktionieren, wenn ich gezielt nach einer Zeile Frage, wenn ich jedoch alles ausgeben möchte bekomme ich folgenden Fehler:

    ERROR: more than one row returned by a subquery used as an expression

    Hoffe das war verständlich

  • Silvervyse
    antwortet
    Bin gerade nicht so wirklich durchgestiegen, wieder was gelernt.

    Funktioniert jetzt, herzlichen Dank!

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von Silvervyse Beitrag anzeigen
    Bin immer noch froh das ich es einzeln zusammen bringe, aber ich bin mit solchen Schnipseln als Anfänger noch etwas überfordert.


    Komme hier mit der Syntax nicht klar

    Code:
    SELECT
    	tabelle_beschreibung.kurztext 
    FROM 
    
    JOIN AS alias1 (tabelle_main_zuordnung JOIN tabelle_beschreibung ON tabelle_main_zuordnung.ID = tabelle_beschreibung.fsid)
    			ON tabelle_main.ID = tabelle_main_zuordnung.mainID
    
    JOIN AS alias2	tabelle_beschreibung ON (tabelle_beschreibung.fsid = tabelle_main.kategorieID)

    select tabelle.spalte, alias1.spalte, alias2.spalte from tabelle left join andere_tabelle as alias1 on ... left join andere_tabelle as alias2 on ... where ...


    und nun stell dich nicht so an.

    Einen Kommentar schreiben:


  • Silvervyse
    antwortet
    Bin immer noch froh das ich es einzeln zusammen bringe, aber ich bin mit solchen Schnipseln als Anfänger noch etwas überfordert.


    Komme hier mit der Syntax nicht klar

    Code:
    SELECT
    	tabelle_beschreibung.kurztext 
    FROM 
    
    JOIN AS alias1 (tabelle_main_zuordnung JOIN tabelle_beschreibung ON tabelle_main_zuordnung.ID = tabelle_beschreibung.fsid)
    			ON tabelle_main.ID = tabelle_main_zuordnung.mainID
    
    JOIN AS alias2	tabelle_beschreibung ON (tabelle_beschreibung.fsid = tabelle_main.kategorieID)

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von Silvervyse Beitrag anzeigen

    Bin mit SQL leider noch nicht so geschickt, bekomme beide Anweisungen jetzt nicht in eine, da er mir dann eben sagt:
    Dann halt Doku lesen, diese sagt:

    Code:
    Command:     SELECT
    Description: retrieve rows from a table or view
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
        * | expression [ [ AS ] output_name ] [, ...]
        [ FROM from_item [, ...] ]
        [ WHERE condition ]
        [ GROUP BY expression [, ...] ]
        [ HAVING condition [, ...] ]
        [ WINDOW window_name AS ( window_definition ) [, ...] ]
        [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
        [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
        [ LIMIT { count | ALL } ]
        [ OFFSET start [ ROW | ROWS ] ]
        [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
        [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
    
    where from_item can be one of:
    
        [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        [ LATERAL ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
        with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        [ LATERAL ] function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...]
    ) ]
        [ LATERAL ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
        from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]
    
    and with_query is:
    
        with_query_name [ ( column_name [, ...] ) ] AS ( select | values | insert | update | delete )
    
    TABLE [ ONLY ] table_name [ * ]
    select ... from join_type <table> as alias1 on ... join_type <table> as alias2 on ...

    Einen Kommentar schreiben:


  • Silvervyse
    antwortet
    Einzeln bekomm ich es mit JOIN-Befehl hin

    Code:
        SELECT
    	tabelle_beschreibung.kurztext AS BeschreibungstextB
        FROM
    	tabelle_main
    
    	JOIN (tabelle_main_zuordnung
    	JOIN tabelle_beschreibung ON tabelle_main_zuordnung.ID = tabelle_beschreibung.fsid) 
             ON tabelle_main.ID = tabelle_main_zuordnung.mainID
    Code:
        SELECT
    	tabelle_beschreibung.kurztext AS BeschreibungstextA
        FROM
    	tabelle_main 
        JOIN tabelle_beschreibung ON (tabelle_beschreibung.fsid = tabelle_main.kategorieID)
    Bin mit SQL leider noch nicht so geschickt, bekomme beide Anweisungen jetzt nicht in eine, da er mir dann eben sagt:

    Code:
    ERROR:  table name "tabelle_beschreibung" specified more than once

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von Silvervyse Beitrag anzeigen

    Greife ich einzeln auf das Feld zu gibt es keine Probleme, aber beide Werte auszugeben funktioniert nicht, da ich nicht zweimal auf das gleiche Ziel von unterschiedlichen Quellen joinen kann.

    2 mal joinen, daher expliziete join-syntax verwenden und Aliase verwenden.

    Einen Kommentar schreiben:

Lädt...
X