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

Access SQL INNER JOIN

Dieses Thema im Forum "Microsoft Access" wurde erstellt von CityHunter, 27 Juni 2015.

  1. CityHunter

    CityHunter Benutzer

    Hallo liebe Datenbankgemeinde,


    ich hab ein kleines Problem, leider komme ich mit die INNER JOIN nicht klar.

    Hoffe dass mir jemand helfen kann.

    Lade auch die Datei hoch.


    Die Übungsaufgabe lautet: Erstellen Sie eine SQL-Abfrage als View "qry_241"

    Alle Artikel, aufsteigend nach Artikelbezeichnung sortiert, gruppiert nach Segment und Kategorie.


    Leider bekomme ich die Sachen nicht Sortiert mit View, bekomme immer ein Fehler in Access.

    Bedanke mich schon mal für die Nette Hilfe.
     

    Anhänge:

    Zuletzt von einem Moderator bearbeitet: 30 Juni 2015
  2. CityHunter

    CityHunter Benutzer

    Ich habe mal mein Gedanken gang in SQL geschrieben.
    Vielleicht kann mir da jemand weiter helfen ob ich da falsch liege.
    Leider bekomme ich von Access ein Fehler angezeigt.
    "Syntaxtfehler in JOIN-Operation."
    leider steht da nicht mehr :(
    Danke

    Code:
    SELECT
       tbl_Artikel.ID,
        tbl_Artikel.Bez,
        tbl_Segment.Bez,
        tbl_Artikelgruppen.Bez
    FROM
        tbl_Artikel
    INNER JOIN
        (
            tbl_Segment
                INNER JOIN tbl_Artikelgruppen
                ON  tbl_Artikel.Ref_ID_Atrikelgruppe = tbl_Artikelgruppen.ID
        )
    ON tbl_Artikel.Ref_ID_Segment = tbl_Segment.ID;
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Das ist so schon mal Murks. Ich hab mir jetzt die Tabellen nicht angeschaut, da der Anhang nicht lesbar ist. Bitte keinen Binärmüll zeigen, sondern einfach die Tabellen zeigen.
     
  4. CityHunter

    CityHunter Benutzer

    Ok denn versuche ich mal die Tabellen so gut wie möglich zu erstellen hier. So hoffe sie ist einiger Maßen übersichtlich.
    tbl_Segment
    ID | Bez
    ---+--------------
    1 |Handgeräte
    2 |Landtechnik

    tbl_Artikelgruppen
    ID
    |Bez
    ---+-----------------------------

    1 | Hacken
    2 | Spaten
    3 | Gabeln
    4 | Schaufeln
    5 | Sensen
    6 | Rechen
    7 | Forst
    8 | Bau
    9 | Rex
    10 | Ice
    11 | Kids
    12 | Stiele
    13 | Zubehör
    14 | Zinken
    15 | Messer
    16 | Begestigungssysteme


    tbl_Artikel
    ID
    | Bez | Preis | Ref_ID_Segment | Ref_ID_Artikelgruppe
    ---+--------------------------------------------------+-------+------------------------+--------------------------------

    1 | Ulmer Hacke | 35 | 1 | 1
    2 | Heilbronner Hacke | 40 | 1 | 1
    3 |Herzhacke, breit |15 | 1 | 1
    4 | Heroldspaten Gärtner Form | |1 | 2
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Wie soll das dann etwa aussehen?

    Code:
    test=*# select * from tbl_segment ;
     id |  bez   
    ----+-------------   
      1 | Handgeräte   
      2 | Landtechnik   
    (2 rows)   
    
    Time: 0,199 ms
    test=*# select * from tbl_artikelgruppen ;
     id |  bez
    ----+-----------------------
      1 | hacken
      2 | spaten
      3 | gabeln
      4 | schaufeln
      5 | sensen
      6 | rechen
      7 | forst
      8 | bau
      9 | rex
     10 | ise
     11 | kids
     12 | stiele
     13 | zubehör
     14 | zinken
     15 | messer
     16 | gefestingsungssysteme
    (16 rows)
    
    Time: 0,212 ms
    test=*# select * from tbl_artikel;
     id |  bez  | preis | ref_id_segment | ref_id_artikelgruppe
    ----+-------------------+-------+----------------+----------------------
      1 | ulmer hacke  |  35 |  1 |  1
      2 | heilbronner hacke |  40 |  1 |  1
      3 | herzhacke, breit  |  15 |  1 |  1
      4 | heroldspaten  |  |  1 |  2
    (4 rows)
    
    Time: 0,176 ms
    test=*# select s.bez, ag.bez, array_to_string(array_agg(a.bez),', ') from tbl_artikel a left join tbl_segment s on a.ref_id_segment=s.id left join tbl_artikelgruppen ag on a.ref_id_artikelgruppe= ag.id group by s.bez, ag.bez;
      bez  |  bez  |  array_to_string
    ------------+--------+--------------------------------------------------
     Handgeräte | hacken | ulmer hacke, heilbronner hacke, herzhacke, breit
     Handgeräte | spaten | heroldspaten
    (2 rows)
    
     
  6. CityHunter

    CityHunter Benutzer

    Na mir ist erst mal das Gruppieren egal. Hab Probleme den zweiten Join aufzubauen. Da bekomme ich immer den Syntaxtfehler in JOIN-Operation.
    Vielleicht könntes du mir dabei helfen um es zu verstehen wie man mit zwei oder mehrere Joins arbeitet.
     
  7. akretschmer

    akretschmer Datenbank-Guru

    CityHunter gefällt das.
  8. CityHunter

    CityHunter Benutzer

    Mit der Schreibweise von deinem Code komme ich nicht so klar :D
     
    Zuletzt von einem Moderator bearbeitet: 29 Juni 2015
  9. ukulele

    ukulele Datenbank-Guru

    Suchst du vieleicht das hier?
    Code:
    SELECT
    tbl_Artikel.ID,
    tbl_Artikel.Bez,
    tbl_Segment.Bez,
    tbl_Artikelgruppen.Bez
    FROM tbl_Artikel
    INNER JOIN tbl_Segment
    ON tbl_Artikel.Ref_ID_Segment = tbl_Segment.ID
    INNER JOIN tbl_Artikelgruppen
    ON tbl_Artikel.Ref_ID_Atrikelgruppe = tbl_Artikelgruppen.ID;
    Du musst bei mehreren Joins nicht zwingend mit Klammern arbeiten.
     
    CityHunter gefällt das.
  10. CityHunter

    CityHunter Benutzer

    Das ist aber kein Join in Join oder?
     
  11. ukulele

    ukulele Datenbank-Guru

    Du joinst zwei mal, das Ergebnis besteht dann aus drei Tabellen. Es kann Sinn machen das anders zu verschachteln aber eigentlich nur wenn man mit GROUP BY oder ähnlichem arbeitet. Hier sehe ich keinen Bedarf für Klammern oder kompliziertere Gebilde.
     
  12. CityHunter

    CityHunter Benutzer

    Ok, wie Arbeite ich denn mit Verschachtelung, hast du da eine Gute Internetseite die es einen gut erklärt?
     
  13. akretschmer

    akretschmer Datenbank-Guru

    was genau suchst du? Sowas (Pseudocode)

    Code:
    
    select ... from tabelle_a left join (select ... from tabelle_b left join tabelle_c on ...) bla on ...
    
    
     
  14. ukulele

    ukulele Datenbank-Guru

    Eigentlich fällt mir grade kein gutes Beispiel ein, es läßt sich fast immer über normale Joins lösen.
     
  15. CityHunter

    CityHunter Benutzer

    @
    akretschmer Die schreibweise kenne ich halt nicht. Sorry.
     
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