-
Hallo Leute,
ich habe ein kleines Problem. Ich habe mehrere Tabellen mit einer 1:n Verbindung. Hier nun mein Problem. Ich habe eine Tabelle Artikel mit ca. 240 Artikelnummern. Diese ist mit einer Tabelle namens Lieferanten verbunden, wie bereits gesat mit einer 1:n Verbindung. Wenn ich nun eine Abfrage durchführe, die mir einfach nur alle Artikelnummern zeigen soll, bekomme ich nicht 240 angezeigt sondern nur 170. Und wenn ich diese Abfrage mit der Lieferantentabelle durchführe bekomme ich wieder nicht alle angezeigt und sogar doppelte einträger der Artikelnummern. WAs läuft da falsch?
-
item: Es handelt sich wohl um MS Access und nicht um Excel oder sontwas
item: Du musst die 2 Tabellen mit einem LEFT JOIN verknüpfen. ggf mit einem DISTINCT oder einem GROUP BY auf die Artikelnummern reduzieren
item: Wir können dir besser zeigen, wenn du a) deine Abfragen besser beschreibst oder b) dein SQL-Code mal zeigst---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Also du hast recht es handelt sich um Access.
Code :1 2
SELECT Artikel.ArtikelNr, Tabelle1.Feld1, Tabelle1.Feld2, Tabelle1.Feld3, Tabelle1.Feld4, Tabelle2.Feld1, Tabelle2.Feld2, Tabelle2.Feld3 FROM ((((((Artikel INNER JOIN Tabelle2 ON Artikel.ArtikelNr = Tabelle2.ArtikelNr) INNER JOIN Tabelle1 ON artikel.ArtikelNr = Tabelle1.ArtikelNr)
So sieht das aus, habe die Tabellen ein wenig umbenannt.
-
12.12.11 13:45 #4
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Also wenn nur 170 angezeigt werden, bedeutet das ja das irgendein WHERE Argument greift. Wenn du aber alle 240 Datensätze anzeigen willst, dann frage die Datensätze einfach so ab:Wenn ich nun eine Abfrage durchführe, die mir einfach nur alle Artikelnummern zeigen soll, bekomme ich nicht 240 angezeigt sondern nur 170
Code sql:1
SELECT artikelnummer FROM deine_tabelle
Denke aber nicht das es das ist was du haben willst!?Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Ja, Access ist unfähig SQL-Code sauber darzustellen. Aber wennm an den Code formatiert, sieht man, dass du ein INNER JOIN drin hast. Dieser grenzt die Artikelmenge auf die Artikel der Tabelle1 ein. Ergo werde nur Artikel ausgegeben, die in Tabelle1 vorhanden sind. Dasselbe mit der Tabelle2. Als Resultat kriegst du also nur die Artikell welche in Tabelle1 UND Tabelle2 vorhanden sind
Ändere diese zu LEFT JOIN und du kriegst alle Artikel der Artikeltabelle
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
SELECT Artikel.ArtikelNr, Tabelle1.Feld1, Tabelle1.Feld2, Tabelle1.Feld3, Tabelle1.Feld4, Tabelle2.Feld1, Tabelle2.Feld2, Tabelle2.Feld3 FROM Artikel LEFT JOIN Tabelle2 ON Artikel.ArtikelNr = Tabelle2.ArtikelNr LEFT JOIN Tabelle1 ON artikel.ArtikelNr = Tabelle1.ArtikelNr
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hmm,
also ich verstehe was Ihr meint aber es funktioniert nicht. Also vielleicht habe ich mich am Anfang falsch ausgedrückt. Ich habe so 240 Artikelnummern: Davon haben aber nur ca. 70 Nummern mehr details. Wenn ich also eine Abfrage mit der Artikeltabelle und zwei weiteren verknüpften Tabellen machen, dann dürften in der View auch nur 70 Artikel mit den passenden Details stehen.
Für ich die Abfrage mit einem INNER JOIN durch, so bekomme ich ca. 100 Artikel angezeigt.
Die gleiche Abfrage mit einem LEFTJOIN zeigt mir dann natürlich alle 240 Artikel an.
-
Nö. Nicht bei einer 1:n-Beziehung.
Wenn du auf einen Artikel, 2 Einträge in der Tabelle1 hast, dann gibt das bereits 2 Zeilen. Wenn du noch 3 Einträge zur selben Artikelnummer in der Tabelle2, dann werden daraus 6 Zeilen.
Du kommst nur auf 70, wenn du eine 1:1 Beziehung hast.
Mein Beispiel von oben in Fakten:
Also, welche der 6 Zeilen zu ArtikelNr 1 soll nun gezählt werden?Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Artikel: ArtikelNr --------- 1 2 Tabelle1: ArtikelNr | id1 --------------- 1 | 11 1 | 12 2 | 21 Tabelle2: ArtikelNr | id2 --------------- 1 | 201 1 | 202 1 | 203 Resultat deines SQLs mit INNER JOIN ArtikelNr | id1 | id2 --------------------- 1 | 11 | 201 1 | 11 | 202 1 | 11 | 203 1 | 12 | 201 1 | 12 | 202 1 | 12 | 203
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
12.12.11 14:49 #8
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Dann sag uns doch mal wie die einzelnen Tabellen aufgebaut sind und über welches Feld sie miteinander verknüpft sind.
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Also ich habe mal eine ganz kleine Test DB angehängt. Wenn ich meine Abfragen dort durchführe funktioniert es auch. Aber man muss sich das so vorstellen das an den Detail Tabellen noch weitere Tabellen hängen.
-
Und ich sollte erwähenen das sich im Verlauf der anderen Tabellen der Primärschlüssel ändert oder manchmal gar keiner vorhanden ist, da ich manche Tabellen per Abfrage erstellt habe.
-
Sorry, ich öffne aus Sicherheitsgründen keine fremden DBs. (Makros und Anderes)
Aber ev. hast du ja mal Lust zu beschreiben (am besten mit einem Beispiel) Was du hast und was du willst.
Siehe dazu mein Beispiel oben wo ich ein Beispiel machte mit meiner Annahme, was du hast.
Achja, ohne Antwort auf Post #7 gibts auch keine weitere Hilfe von meiner Seite.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Also zu deinem Post #7. Du lässt dir ja alles anzeigen was ArtikelNr 1 hat. Ich möchte aber das alle Artikel angezeigt werden zu denen es weitere Details gibt. Kann ich hier nen Screeshot posten? Das wäre glaub ich am besten.
-
Mach ein Beispiel.
Deine Erklärungen widersprechen sich seit dem ersten Posting und verwirren immer mehr.
Wie so ein Beispiel aussehen kann siehst du im Post #7.
Also, ich Versuchs trotzdem. Ich vergesse einfach mal was du bisher geschrieben hast und betrachte nur dein SQL und deine letzte Aussage (Post #13).
Warum gibtst du Felder der Tabelle1 und Tabelle2 aus? Wenn du diese Felder weglässt, kannst du einen DISTINCT anwenden. Aber nur wenn du keine Ausgabe der Tabelle1 und Tabelle2 machst. Denn nur dann hast du je eine eindeutige Zeile pro Artikelnummer welche in beiden anderen Tabellen vorhanden ist.
Code sql:1 2 3 4 5 6 7 8
SELECT DISTINCT Artikel.ArtikelNr FROM Artikel INNER JOIN Tabelle2 ON Artikel.ArtikelNr = Tabelle2.ArtikelNr INNER JOIN Tabelle1 ON artikel.ArtikelNr = Tabelle1.ArtikelNr
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
12.12.11 15:58 #15
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
Ähnliche Themen
-
Problem mit einer SQL Abfrage
Von DerKleene1 im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 24.08.07, 16:51 -
Problem bei einer Abfrage
Von aro69 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 02.04.07, 23:10 -
Problem bei einer Abfrage
Von aro69 im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 02.04.07, 12:55 -
Problem mit einer DB Abfrage
Von webteddy im Forum PHPAntworten: 2Letzter Beitrag: 26.08.05, 14:36 -
Problem mit einer Variable bei einer Mysql-Abfrage in php
Von Blaschki im Forum PHPAntworten: 3Letzter Beitrag: 28.07.03, 10:08



2Danke

Zitieren



Login





