Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Abfrage mehrerer Tabellen mittels SQL-Query

Frage Entwicklung Datenbanken

Mitglied: matten82

matten82 (Level 1) - Jetzt verbinden

01.11.2005, aktualisiert 07.11.2005, 7156 Aufrufe, 7 Kommentare

Habe in der Berufsschule folgende Aufgabe bekommen. Googeln gab da nichts her und mich l�uft langsam die Zeit weg, aber vll hat ja jemand Lust mir ein wenig zu helfen.

Die Datenbankstruktur:

<img src='/images/articles/3b1858cd10979e9eb39afec0c5a44fd1-123.gif' align='default' hspace='0' vspace='0' border='0'>

Die Aufgabe:

1. Lassen Sie sich alle Artikel mit der Artikelnummer, Bezeichnung und Lieferer für die Warengruppe Computer anzeigen [15 DS].

Der Link zur kompletten Aufgabe:

http://www.hafenklause.de/sql_uebung.zip

W�re Nett wenn jemand den SQL-Query f�r Aufgabe 1. mal hier posten und kurz erkl�ren k�nnte.
Ich kriege es momentan leider nur hin, dass ich die Artikelnummer und die Bezeichnung ausgegeben bekomme. An den Lieferer komme ich momentan nicht ran, da ich nicht wei�� wie ich die Abfrage �ber mehr als 2 Tabellen machen soll.


Dann denke ich bekomme ich die anderen Aufgaben auch hin. Wenn jemand alle 5 Aufgaben l�sen m�chte, hab ich da nat�rlich auch nichts gegen einzuwenden, sofern da eine kurze Erl�uterung bei ist. ;)

Sch�nen Gru�
Mitglied: Angelkiller
01.11.2005 um 20:50 Uhr
Also deine Hausaufgaben werden wir dir sicherlich nicht machen, da mussten wir schließlich auch alle mal durch . Poste doch mal die Abfrage wie du Sie momentan hast, dann kann man mal ans korrigieren gehen .

Viele Grüße
Angelkiller
Bitte warten ..
Mitglied: 16640
02.11.2005 um 08:11 Uhr
Moin,

ich versteh' Dein Problem nicht. Du hast eine Accessdatenbank, die Dir bis auf die Einschränkung auf die Warengruppe sowieso schon alles automatisch hinbaut. Was genau ist Dein Problem?

Zum grundsätzlichen Verständnis solltest Du mal nach dem Begriff JOIN und seinen Ausführungen (LEFT JOIN, INNER JOIN, RIGHT JOIN, LEFT OUTER JOIN, ...) googlen. Das dient dann wirklich dem Verständnis.

Gruß
dba
Bitte warten ..
Mitglied: Biber
02.11.2005 um 20:20 Uhr
@16640
Hmmm, lass uns fair bleiben:
>>Du hast eine Accessdatenbank, die Dir bis auf die Einschränkung auf die Warengruppe
>>sowieso schon alles automatisch hinbaut.
>>Was genau ist Dein Problem?
Das Problem ist möglicherweise, dass nicht jeder Berufsschüler an seinem Heim-Computer ein MS-Access installiert hat. Denn das ist zwar nur ?9.95 wert, kostet aber im Laden mehr.
Und zusätzlich soll es sogar Berufsschüler geben, die nicht einmal einen Rechner ihr Eigen nennen.

Wenn ich mal gutwillig unterstelle, dass matten82 eben nicht mal kurz den Klicki-Bunti-Assistenten im Access anschmeißen kann oder per Trial'N'Error mal zwei Stündchen ein paar SQL-Statements eintippseln und deren Wirkung interpretieren kann... wenn er also nur das Aufgabenblatt auf Papier vorliegen hat und sich zweimal täglich ins Internetcafe begibt, um sich diesen Thread anzugucken... dann können wir doch ein bisschen helfen tun... ist doch bald Weihnachten...

@matten82
Aber wie Angelkiller schon geschrieben hat... wir helfen gern, wenn es irgendwo klemmt.
Und Admins sind schon gewohnt, den ganzen Tag den Schutt anderer Leute wegzuschaufeln. Aber Deine Hausaufgaben machen wir nicht.

Back To Thread.

Die Tabellen in der Datenbank "Beschaffung" sind ja halbwegs normalisiert und über einige Schlüsselfelder, die in zwei oder mehr Tabellen vorkommen, miteinander verknüpft.

So z.B.
- die Tabelle "Artikel" mit der Tabelle "Warengruppe" .......über das Feld "Warengruppenschlüssel",
- die Tabelle "Artikel" mit der Tabelle "Artikel_Lieferer"..... über das Feld "Artikelnummer",
.....usw.
wobei es mal n:1-Beziehungen, mal 1:n-Beziehungen sind....
Eine Artikelnummer kann nur zu genau einer Warengruppe gehören, aber zu einer Warengruppe können n Artikel gehören.
Eine Artikelnummer kann von mehreren Lieferanten bezogen werden, ein Lieferant kann mehrere Artikel liefern, aber ein Lieferant kann nur in einer Straße in einem Ort wohnen.

Wenn die Tabelleninhalte "sauber" wären (weil es zum Beispiel über Prüfungen des Erfassungsprogramms und/oder über Datenbankrestriktionen gewährleistet wird), ließen sich die Fälle "es gibt aber Artikel, die keiner Warengruppe zugeordnet sind" und "es gibt Artikel in der Artikel-Tabelle, für die kein Lieferant existiert" ausschließen.

In den Aufgaben sind nur diese "sauberen" Datensätze gefragt. In diesem Fall kannst Du alle Beziehungen in SQL über INNER JOINs abbilden.
Ein select * from artikel INNER JOIN artikel_lieferer ON artikel.artikelnummer = artikel_lieferer.artikelnummer
würde Dir alle Felder der "Artikel"-Tabelle liefern mit den 5 Feldern der Artikel_Lieferer zusätzlich, verknüpft über das Feld "Artikelnummer, das in beiden Tabellen vorkommt.
Hier würde herauskommen (bei 69 Artikelnummern in der Artikel-Tabelle) --> 76 Datensätze. Da ja z.B. "Tischleuchten" und "Monitor-Schwenkarme" bei mehreren Lieferanten bestellbar sind.
Ein select * from artikel LEFT JOIN artikel_lieferer ON artikel.artikelnummer = artikel_lieferer.artikelnummer
würde Dir sogar einen Satz mehr liefern, nämlich auch diesen "kaputten" Satz aus der Artikeltabelle, den es bei gar keinem Lieferanten gibt.
LEFT JOIN hieße also (als Eselbrücke) in etwa: Alle Sätze aus der LINKEN Tabelle, egal ob in der RECHTEN Tabelle vorhanden.
Links und rechts natürlich auf das SQL-Statement bezogen, nicht auf die Anordnung im Bildchen oben.
INNER JOIN ebenso platt zu merken: alle Datensätze, die INNER linken und INNER rechten Tabelle vorhanden sind.

Dann wäre eine von mehreren richtigen Lösungen für die Aufwärm-Aufgabe 1 also:
01.
SELECT artikel.artikelnummer, 
02.
       artikel.artikelbezeichnung, 
03.
       <s>artikel.warengruppenschlüssel, </s> ...nicht gefordert 
04.
       <s>artikel_lieferer.lieferernummer, </s> ...nicht gefordert 
05.
       lieferer.firmenname 
06.
FROM lieferer INNER JOIN (warengruppe  
07.
  INNER JOIN  
08.
  (artikel  
09.
    INNER JOIN artikel_lieferer ON artikel.artikelnummer = artikel_lieferer.artikelnummer)  
10.
      ON warengruppe.[verbindendesFeld2]= artikel.[verbindendesFeld2])  
11.
        ON lieferer.[verbindendesFeld3]= artikel_lieferer.[verbindendesFeld3] 
12.
WHERE (((warengruppe.warengruppenbezeichnung) = 'was-auch-immer'));
... wobei Access-SQL bei 'was-auch-immer' die doppelten Anführungszeichen auch tolerieren würde ("was-auch-immer"). Kleine Nettigkeit von Bills Bande.

Zur eventuellen Korrektur der nächsten Aufgaben stehen wir gerne zur Verfügung.

Und ich gehe fest davon aus, dass Du vor dem 1. Advent hier Dein erstes kleines SQL-Tutorial gepostet hast.

HTH Biber

P.S. Ich hoffe, ihr wisst, dass sich Euer Berufsschullehrer eine Menge Mühe damit gemacht hat, ein realitätsnähes Beispiel für Euch zusammenzutragen. Steckt IMHO wesentlich mehr Arbeit drin, als er machen müsste. Ein kleiner leckerer Baumkuchen von Feinkost-Albrecht als Dank an ihn wäre das Mindeste, was ihr ihm spendieren solltet.
Bitte warten ..
Mitglied: 16640
03.11.2005 um 07:32 Uhr
Hallo Biber,

@dba
Hmmm, lass uns fair bleiben:

Du hast Recht. Ich war davon ausgegangen, weil in dem Beispiel, dass er zum Herunterladen bereitgestellt hat, diese Access-DB enthalten war. Aber kann ja sein, dass er selbst gar keine Möglichkeit zum Bearbeiten hat.

Und ansonsten ist Deinen Ausführungen nix hinzuzufügen

Schönen Donnerstag und Gruß
dba
Bitte warten ..
Mitglied: matten82
07.11.2005 um 10:46 Uhr
Danke für die Hilfe.

Zum besseren Verständnis warum ich hier meine Hausaufgaben poste.
Haben seit ca. 1/2 Jahr keinen EDV-Ausbildungsleiter mehr und sind bei uns in der Firma jetzt nur noch 2 Azubis, die den Laden schmeißen müssen. Deshalb auch keine Möglichkeit irgendjemand mal zu fragen, wenn wie hier ein Problem auftritt. Das Problem war hier halt die Unkenntnis des Join-Befehls. Und wenn man nich genau weiß wonach man suchen soll, hilft einem Google meist auch nicht so viel weiter. Und ich habe seit einem 1/2 Jahr sehr viel Erfahrung mit Google gemacht ;).

PS.: Hast Recht der Lehrer gehört echt noch zu den Motivierten. Mal schaun, ob sich da was machen lässt mit der Klasse.
Bitte warten ..
Mitglied: Biber
07.11.2005 um 11:17 Uhr
Dir auch Danke, matten82,
für die Antwort und die Hintergrundinfo.
Wie schon oben geschrieben: wenn es um Verständnisprobleme geht, finden sich hier mit Sicherheit viele Hilfswillige. Also scheue Dich nicht, Dich wieder zu melden, wenn Du irgendwo stecken bleibst. Angebot steht nach wie vor.

Schönen Montag
Biber
Bitte warten ..
Mitglied: Angelkiller
07.11.2005 um 12:45 Uhr
Das mit den Hausaufgaben machen war ja auch nur ein Scherz, man darf net alles so eng sehen

Wie schon Biber gesagt hat, wenn was ist fragen !!

Gruß
Timo
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
SUM oder AVG in SQL Abfrage dauert viel zu lange warum? (5)

Frage von samet22 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...