Zum Inhalt springen

Viele Joins auf einmal... mehrere Tabellen verknüpft


sockä

Empfohlene Beiträge

Hallo,

bin grade etwas verzweifelt. Habe in einer DB viele Tabellen, davon eine Tabelle "Computer". Dann habe ich andere Tabellen, z.B. "Grafikkarte", "Soundkarte", "Speicher" etc. wo immer jeweils n Schlüssel drin ist und ein Beschreibungsfeld (in der Tabelle "Grafik" z.B. alle Grafikkarten, die es so gibt). In meiner Tabelle "Computer" steht jetzt nur ne Zahl, z.B. eine 5. Diese Zahl ist der Fremdschlüssel auf eine andere Tabelle.

Denn alle Tabellen waren mal in Access... :rolleyes und nun sind sie in mySQL. Und die ganzen Verknüpfungen sind quasi 1:1 Beziehungen.

Wie habe ich nun den geringsten Aufwand, um mir zu einem Eintrag in der Tabelle "Computer" alle richtigen Werte (also nicht "5" sondern z.B. "GeForce 6400") anzeigen zu lassen?

Gibt es die Möglichkeit, mehrere Joins aneinander zu kleben?!

Bitte um Hilfe... :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gut... das freut mich schon mal.

Aber wenn ich nun ein Update machen möchte.... oder gar noch ein Insert... da habe ich ja nicht die Möglichkeit, JOINS zu nehmen... wie gehe ich da am Besten vor?

Ich wäre auch bereit, eine "richtige" neue Tabelle zu machen mit richtigen Einträgen und keinen Ziffern mehr. Nur leider wären das knapp 500 Datensätzen und da die Verknüpfungen in 26 Tabellen sind.... :/

Vielleicht dafür einen Tipp?!

btw... bei 26 Tabellen... würde da ein Join immer noch gehen?! (Ohne das der Server platzt?)

Link zu diesem Kommentar
Auf anderen Seiten teilen

@sockä:

ich an deiner stelle würde mich über die datenbankstruktur freuen. genauso sollte es ja schließlich sein.

beim updaten der daten kommst du wohl nicht um folgende vorgehensweise herum:

1. prüfen ob spezielle hardwarekomponente vorhanden,

wenn ja, dann id herausfinden

wenn nein, dann eintragen und neue id rausfinden

2. id in haupttabelle eintragen

aber ich betone nochmal, genauso soll eine komplexe datenbank aufgebaut sein, damit sie pflegeleichter und übersichtlicher ist.

zur geschwindigkeit:

natürlich drückt die masse der tabellen und natürlich deren datensätze auf die performance. in dem fall heißt es einfach ausprobieren und entscheiden, ob die geschwindigkeit der zahlreichen joins noch akzeptal ist (vor allem sollte man dabei bedenken in wie weit die db noch erweitert werden soll)

wenn die performance zu gering ist, dann sollte man auch hier über gestaffelte SQL-Abfragen nachdenken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie habe ich nun den geringsten Aufwand, um mir zu einem Eintrag in der Tabelle "Computer" alle richtigen Werte (also nicht "5" sondern z.B. "GeForce 6400") anzeigen zu lassen?

Gibt es die Möglichkeit, mehrere Joins aneinander zu kleben?!


SELECT CompNr, CompHersteller, MBBezeich, GraKaBezeich FROM Computer C

LEFT JOIN Mainboards M ON C.MBID = M.ID

LEFT JOIN Grafikkarten G ON C.GKID = G.ID


Ergebnis: 

  1, Siemens, Asus, GeForce 6400

  2, IBM, GigaByte, ATI Radeon 9700

  3, Medion, ASRock, Binford 6100

  ...


beliebig fortzusetzen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Jesterday: das mit deinen Joins war schon mal das, was ich meinte- Funktioniert auch sehr gut, vielen Dank dafür.

ABER ;) Was mache ich nun mit Inserts in die vielen Tabellen? Da kann ich ja kein Join machen... weil Join ja erst geht, wenn ich etwas vergleichen kann, das kann ich ja nicht bei INSERT, da die Daten ja dazu kommen und ich kein Vergleichsmerkmal habe... oder sehe ich das jetzt falsch?

ich an deiner stelle würde mich über die datenbankstruktur freuen. genauso sollte es ja schließlich sein.

... naja, ich habe damit bisher nur Ärger... mMn kann man es mit Normalisieren auch übertreiben... :/

Link zu diesem Kommentar
Auf anderen Seiten teilen

ABER ;) Was mache ich nun mit Inserts in die vielen Tabellen? Da kann ich ja kein Join machen... weil Join ja erst geht, wenn ich etwas vergleichen kann, das kann ich ja nicht bei INSERT, da die Daten ja dazu kommen und ich kein Vergleichsmerkmal habe... oder sehe ich das jetzt falsch?

Nein, das siehst du richtig. Ein INSERT musst du für jede Tabelle machen.

Was du noch machen könntest, wäre das über Trigger steuern. Also sobald ein die Haupttabelle etwas eingetragen wird, wird ein Befehl ausgelöst. Geht glaub ich in der neuesten MySQL Version und soll noch verbessert werden.

Aber ich sehe dazu eigentlich keinen Anlass: Deine Stammdaten (Hardware und Hersteller etc.) pflegst du z.B. in einem eigenen Programm oder einer eigenen Eingabemaske. Dabei hast du ja für jede Tabelle dann 1 INSERT. Und wenn die Daten eingegeben sind, kannst du dir daraus einen PC zusammenstellen und dazu dann noch ein paar Extra Daten erfassen (Standort, Benutzer etc.). Das ist dann auch wieder ein eigenes INSERT.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke, JesterDay... ich stehe hier irgendwie im Wald... :)

Habe die SELECT-Anweisung mit gaaaanz vielen Joints fertig, es waren am Ende 38 Zeilen... aber es geht... und auch noch halbwegs schnell (zumindest kann man es ertragen).

Deine Idee mit dem INSERT klingt gut, ich glaube, so werde ich es auch machen. Leider habe ich keine aktuelle mysql-Version sondern nur eine 4.x, aber Trigger habe ich mich eh noch nicht so eingearbeitet.

Vielen Dank für deine Mühen... jetzt sehe ich alles etwas klarer! :---)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...