Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [SQL] brauche hilfe bei vielen N:M verkn. (https://www.delphipraxis.net/113267-%5Bsql%5D-brauche-hilfe-bei-vielen-n-m-verkn.html)

Newbie44 5. Mai 2008 14:10


[SQL] brauche hilfe bei vielen N:M verkn.
 
Hallo,

ich bin im moment total überfordert. ich habe mehrere tabellen die in fast nur N:M zusammenhängen stehen.

Ich hab euch mal ein Bild gemacht:

http://img357.imageshack.us/img357/6382/tabellemq1.jpg
http://img357.imageshack.us/img357/6...b761eec4e6.jpg
Also die Hauptabelle ist in der Mitte grün Markiert. Jetzt hab ich ein Problem. Ich möchte einen Select schreiben, der mir alle Informationen dieser Tabellen zusammenfasst, also der mir eine Große tabelle erzeugt wo ich alles rauslesen kann.

Also Komponist und Verlag und alles was dazu gehört. Das Ergebnis sollte dann so aussehen als tabelle:

Titel | Komponist | Interpret | Sendedauer | CD ( von Tabelle fdb_cd) | Komponist(en) | labelcode | marke

wie mach ich das? ich hab noch nie so komplizierte Tabellen gehabt. die tabellen sind auch nicht von mir ich soll jediglich den Select daraus bilden.

Für eure Hilfe wäre ich euch wirklich sehr dankbar.

Gruß und Danke

Schedl

shmia 5. Mai 2008 14:58

Re: [SQL] brauche hilfe bei vielen N:M verkn.
 
Ich mach dir mal die Abfrage für eine N:M Beziehung:
SQL-Code:
SELECT fdb_musik.*,
fdb_komponisten.vorname,
fdb_komponisten.nachname,
fdb_komponisten.Webseite
 FROM
fdb_musik LEFT OUTER JOIN fdb_kom ON fdb_musik.musikid=fdb_kom.fdb_musik_musikid
LEFT OUTER JOIN fdb_komponisten ON fdb_komponisten.kid=fdb_kom.fdb_komponisten_kid
Hinweise:
1.) ich habe LEFT OUTER JOIN anstelle von INNER JOIN verwendet, damit auch die Datensätze von Tabelle "fdb_musik" geliefert werden, bei denen kein Komponist eingetragen ist
2.) das Feld "WebSeite" ist viel zu kurz; mach varchar(255) draus
3.) für meinen Geschmack übertreibst du es mit dem Prefix "fdb_"; weniger ist manchmal mehr
4.) weitere Tabellen lassen sich wie oben gezeigt mit LEFT OUTER JOIN verknüpfen. Mach mal mit fdb_label weiter.

Nachtrag:
Bei den Tabellen für die N:M Verknüpfung hast du jeweils einen eigenen Index auf die Fremdschlüsselfelder gelegt.
Es sollte aber nur ein Index, der beide Felder umfasst vorhanden sein. Dieser Index sollte Unique sein, damit doppelte Einfügungen verhindert werden.

Newbie44 5. Mai 2008 15:09

Re: [SQL] brauche hilfe bei vielen N:M verkn.
 
Wow vielen vielen dank für deine hilfe. ich hab leider bislang nur mit 1:n und 1:1 programmiert und noch nicht N:M daher war mir das mit den schlüsseln noch nicht so bekannt.

wie mach ich aus zwei schlüsseln einen unique schlüssel im dbdesigner? wäre dir dankbar wenn du mir das noch erläutern könntest.

und nochmals danke für deine schnelle und nette hilfe.

shmia 5. Mai 2008 15:13

Re: [SQL] brauche hilfe bei vielen N:M verkn.
 
Zitat:

Zitat von Newbie44
wie mach ich aus zwei schlüsseln einen unique schlüssel im dbdesigner?

Ich kenne deinen dbdesigner nicht, aber so müsste es gehen:
Zuerst die beiden bestehenden Indexe löschen.
Dann die zwei Felder markieren (Strg- oder Shift-Taste dazu nehmen) und einen neuen Index anlegen.

Newbie44 5. Mai 2008 16:18

Re: [SQL] brauche hilfe bei vielen N:M verkn.
 
so ich hab es jetzt überall mit phpmyadmin löschen und anpassen können, überall bis auf eines ich zittiere mal den fehler:

SQL-Befehl:

ALTER TABLE `fdb_kom` DROP INDEX `123`

MySQL meldet: Dokumentation
#1025 - Error on rename of './usr_s013w420_3/#sql-6391_992e' to './usr_s013w420_3/fdb_kom' (errno: 150)

so einen fehler hatte ich noch nie.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz