Access SQL INNER JOIN

CityHunter

Benutzer
Beiträge
8
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

  • Werkzeug-Shop_01.zip
    40,8 KB · Aufrufe: 9
Zuletzt bearbeitet von einem Moderator:
Werbung:
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;
 
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
 
Alle Artikel, aufsteigend nach Artikelbezeichnung sortiert, gruppiert nach Segment und Kategorie.

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)
 
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.
 
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.
 
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.
 
was genau suchst du? Sowas (Pseudocode)

Code:
select ... from tabelle_a left join (select ... from tabelle_b left join tabelle_c on ...) bla on ...
 
Werbung:
Zurück
Oben