sockä Geschrieben 13. Januar 2005 Teilen Geschrieben 13. Januar 2005 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 13. Januar 2005 Teilen Geschrieben 13. Januar 2005 Gibt es die Möglichkeit, mehrere Joins aneinander zu kleben?! ja die gibt es, und so werde ich es auch lösen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sockä Geschrieben 13. Januar 2005 Autor Teilen Geschrieben 13. Januar 2005 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?) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bmg4ever Geschrieben 13. Januar 2005 Teilen Geschrieben 13. Januar 2005 @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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 14. Januar 2005 Teilen Geschrieben 14. Januar 2005 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sockä Geschrieben 17. Januar 2005 Autor Teilen Geschrieben 17. Januar 2005 @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... :/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 18. Januar 2005 Teilen Geschrieben 18. Januar 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sockä Geschrieben 18. Januar 2005 Autor Teilen Geschrieben 18. Januar 2005 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! :---) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.