WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Datenbanken Anstosshilfe (http://www.wcm.at/forum/showthread.php?t=144551)

3of4 12.09.2004 18:27

Datenbanken Anstosshilfe
 
ich habe eine tabelle mit fahrzeugen (jedes fahrzeug kommt nur einmal vor) und eine tabelle mit ausrüstungsgegenständen (jeder gegenstand kommt nur einmal vor)
wenn ich jetzt zwischen den beiden tabellen eine verknüpfung herstellen will (jedes fahrzeug hat eine variable anzahl von ausrüstungsgegenständen, aber eine ausrüstung kann auch in mehreren fahrzeugen vorhanden sein...) brauch ich dafür unbedingt eine dritte tabelle dazwischen oder gibt es eine andere elegante (!!!) lösung? (mir fällt nur die extratabelle ein, allerdings scheu ich davor noch ein bisserl zurück...)

außerdem bräuchte ich noch die passenden sql-abfragen für diese tabellen, irgendwie funzt bei mir überhaupt nix (*dentagvormschleppiverschissenhab*)

mtrax 12.09.2004 18:35

ich hoffe ich habe das richtig verstanden...

nein brauchst du nicht unbedingt, reicht nur eine zusätzliche Spalte, mit den Gegenständen (als Zahl oder so)...

tblCar:
Auto - Gegenstände
Audi - 1,5,6,7
VW - 2,5,6
Opel - 1,5,6

tblequipment:
1 - Reifen
5 - Lenkrad
6 - Lichtmaschine

etc...

MySQL ? oder MS Access ?

3of4 12.09.2004 18:49

Wenn ich eine extra Spalte mache, müsste ich die Werte als String reinspeichern, ganz abgesehen davon, dass keine Aktualisierungsweitergabe stattfindet...

Das ganze ist für ein CMS (konkret die Verwaltung der Feuerwehrfahrzeuge und dazu halt ein auszugsweiser Plan welche Ausrüstung in welchem Fahrzeug ist...)

mtrax 12.09.2004 19:09

Hmmm wo ist dann das Problem ?

Irgendwann muss du einmal einem Fahrzeug einen Gegenstand zuordnen...
Ob das in einer extra Tabelle oder extra Spalte geschieht...ist ansicht sache...

3of4 12.09.2004 19:12

Zitat:

Original geschrieben von mtrax
Hmmm wo ist dann das Problem ?

Irgendwann muss du einmal einem Fahrzeug einen Gegenstand zuordnen...
Ob das in einer extra Tabelle oder extra Spalte geschieht...ist ansicht sache...

ich will einem fahrzeug viele gegenstände bzw. einem gegenstand viele fahrzeuge zuordnen...
und genau diese 1:n beziehungen krieg ich anders nicht hin :(

T.dot 12.09.2004 19:24

Sers!

Also wenn ich dich richtig verstanden habe musst du das ganze als m:n Beziehung (1 Auto -> mehrere Gegenstände, 1 Gegenstand -> mehrere Autos) auflösen

und das geht nur über eine Zwischentabelle. z.b.:

(Felder mit ID sind eindeutige Bezeichner, also Primärschlüssel)

Tabelle tblFahr (Fahrzeuge):
FA_ID, Fahrzeugname, ...

Tabelle tblGeg (Gegenstände):
GE_ID, Gegenstandsname, ...

Zwischentabelle tblFahrGeg (FahrzeugGegenstände):
FA-GE_ID, FA_ID, GE_ID

um jetzt anzeigen zu lassen, in welchem Fahrzeug welche Gegenstände sind:

SELECT Fahrzeugname,Gegenstandsname
FROM tblFahr, tblGeg
WHERE tblFahr.FA_ID=tblFahrGeg.FA_ID
AND tblGeg.GE_ID=tblFahrGeg.GE_ID


hoffe geholfen zu haben

mfg Thomas

Jaguar 12.09.2004 19:29

Du bekommst das nicht hin weil das keine 1:n sondern eine m:n Relation ist. Auflösen einer m:n Beziehung schaffst nur mit Hilfe einer weiteren Tabelle die zumindest die beiden Schlüsselfelder der zu verknüpfenden Tabellen hat.

frazzz 12.09.2004 19:33

Zitat:

Original geschrieben von Jaguar
Du bekommst das nicht hin weil das keine 1:n sondern eine m:n Relation ist. Auflösen einer m:n Beziehung schaffst nur mit Hilfe einer weiteren Tabelle die zumindest die beiden Schlüsselfelder der zu verknüpfenden Tabellen hat.

:ja:

hört sich gut an. :D

3of4 12.09.2004 19:42

aha, ich nannte es halt eine n:1:n beziehung :D (in meiner mir eigenen typisch unverständlichen weise)

allerdings klappt das ganze noch immer nicht so wie ich will :(

Code:

SELECT DISTINCTROW fahrzeuge.f_name, ausruestung.a_name
FROM fahrzeuge INNER JOIN (ausruestung INNER JOIN kreuztabelle ON ausruestung.a_id = kreuztabelle.aid) ON fahrzeuge.f_id = kreuztabelle.fid
GROUP BY fahrzeuge.f_name;

Fahrzeuge und Ausruestung sind die Tabellen, ausruestung.aid und fahrzeuge.fid die schlüsselwerte und kreuztabelle meine hilfstabelle...
ich will, dass neben 1. fahrzeug eine liste von allen darin enthaltenen gegenständen auftaucht, nur irgendwie frissts meinen sql-string nicht :(

frazzz 12.09.2004 19:46

die syntax welchen dbs ist das :rolleyes:


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag