Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

SQL Frage

Begonnen von 4woerny, August 19, 2018, 09:22:59

⏪ vorheriges - nächstes ⏩

4woerny

Hallo @ all,

ich habe folgendes Problem. Ich bekomme einen Datenexport als *.csv Datei zur Verfügung gestellt. Diesen verarbeite ich in Access.
In dieser Tabelle werden die Systeme unter einer SystemID geführt. Jedes System hat mehrere Komponenten. Jede Komponente hat eine ID. Jedes Gerät hat eine GeräteID.

Beispiel:








System IDKomponentenIDGerätenamenGeräteIDTyp
1111111112344563412568Monitor
111111113245632Computer 2347823467Computer
1111111143501255634543Drucker
1111111145043046023462Telefon
1111111134505204560234Laptop

Ist es mit einer Abfrage möglich, anhand der Geräte ID (z.b. des Drucker) über die SystemID, den dazugehörigen Gerätenamen zu erhalten? Also ich suche nach der 563453 und sollte ,,Computer 234" zurückerhalten.

Dieser Gerätename steht leider nicht immer in jeder SystemID Zeile, kann mal  bei Computer, kann auch mal beim Monitor stehen, oder beim Telefon.


Gruß
Werner

ebs17

Wenn sich der Gerätename mit der System ID als Primärschlüssel in einer eigenen Tabelle befindet, ist die Abfrage sehr leicht und gelingt Dir wahrscheinlich selbst ganz einfach.
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

Hallo Werner,
Unabhängig des von Eberhard angesprochenen Datenmodells, bringt die
folgende Abfrage das gewünschte Ergebnis mit der gezeigten Tabellenstruktur.

SELECT S.Geraetenamen
FROM Systeme AS S
WHERE S.SystemID =
      (SELECT G.SystemID
       FROM Systeme AS G
       WHERE G.GeraeteID=5634543)
AND S.Geraetenamen Is Not Null


gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

@Eberhard
ZitatWenn sich der Gerätename mit der System ID als Primärschlüssel in einer eigenen Tabelle befindet
Müsste es nicht
Zitat... als Fremdschlüssel ...
heissen?
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

4woerny

 :D *wunderbar*
... da wäre ich im Leben nicht drauf gekommen!

DANKE

ebs17

@ekkehard: In der Tabelle mit den Geräten (Computern) als Primärschlüssel und in der gezeigten Komponenten-Geräte-Tabelle als Fremdschlüssel, oder man verwendet wie vielfach üblich entsprechende Surrogatschlüssel.
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

Hallo Eberhard,
Hm, entweder "klickt" es bei mir mal wieder nicht, oder wir interpretieren
die Struktur unterschiedlich, die allerdings aus der Beschreibung auch
nicht hervorgeht.
ZitatDiesen verarbeite ich in Access.
Das "Wie" bleibt offen  :(

Wo es bei mir hakt ist, - wie kann der Gerätename "in einer eigenen
Tabelle" die SystemID als PK haben?
Bei mir kämen die gezeigten DS aus einer n:m-Tabelle in denen die
Tabellen "Systeme", "Komponenten" und "Geräte" zusammen kommen,
und da wären die IDs doch FKs.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

ebs17

ZitatIst es mit einer Abfrage möglich, anhand der Geräte ID (z.b. des Drucker) über die SystemID, den dazugehörigen Gerätenamen zu erhalten? Also ich suche nach der 563453 und sollte ,,Computer 234" zurückerhalten.
Ich interpretiere das so, dass die SystemID die ID zu ,,Computer 234" ist. Daher würde ich den Computer in eine weitere Tabelle auslagern. Da hatte ich vorab an eine 1:n-Beziehung gedacht, m:n ist aber besser, wenn Geräte von Computern getauscht werden.

Wie gesagt: Interpretation, findet im eigenen Kopf ab.
Für eine gescheite Abfrage lässt man sich vorher das Beziehungsbild zeigen, dass man auf Basis  von Kenntnis formulieren kann und Ratereien denen überlässt, die Spaß damit haben.
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

@Eberhard
Hast ja Recht. Aber du kennst mich doch; - ich hau halt manchmal
solche Schnellschüsse raus, - ohne viel zu denken  :(
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)