Zum Inhalt springen

hilfe bei verbindungstabelle


mb72

Empfohlene Beiträge

Hallo zusammen,

ich versuche kurz zu schildern worum es geht:

1. Ich habe zwei Tabellen in einer Datenbank

a)zeitungen(name, telefon, email)) und

b)sportvereine(name, ansprechpartner, telefon)).

2. Ziel des Ganzen: Ich möchte einen Sportverein aus der Tabelle auswählen und dann die jeweiligen Zeitungsdaten (name, telefon, usw) dazu bekommen --> also z.B. ich wähle "werder bremen" aus und bekomme die jeweiligen zeitungen mit den kontaktdaten angezeigt, die mit werder kooperieren, soweit so gut.

in einem anderen forum wurde mir insoweit geholfen, dass ich in den beiden tabellen (sportvereine und zeitungen) ein id-feld als primärschlüssel einrichten musste. und eine dritte tabelle als verbindungstabelle mit den fremdschlüsseln (also die id der beiden tabellen sportvereine und zeitungen)

ok, im moment bekomme ich eine post-variable mit dem vereinsnamen, der ausgewählt wurde. diese variable möchte ich in den select verbauen. ABER: was, wenn es mehrere zeitungen sind, die in kooperation mit dem ausgewählten verein stehen. ich kann ja immer nur einen wert (id=0001 (für bild-zeitung)) in der zeile abspreichern. oder muss ich einen array anlegen. nur wie, will ja nicht das bei einem update der tabelle der vorherige wert wieder futscht ist. mhh... ok, vielleicht erstmal eins nach dem anderen.

nur wie mache ich das dann konkret? also select-technisch? wie gesagt, ich habe ja in der vereinstabelle gespeichert ( wo, in welcher zeile eigentlich) welche zeitungen bei dem datensatz in frage kommen...... (also ich denke als id(also als nummern im array))

also muss der selecht ja ein verbund aus beiden (allen drei) tabellen sein. mhhh...

grüße mario

über hilfe wäre ich sehr dankbar!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte ordne Deine Probleme, denn es handelt sich hier nicht um ein reines Datenbankproblem.

Du benötigst eine Tabelle, in die jeweiligen PKs zusammengeführt werden, der Select wird dann über einen Join gemacht. Wie Du die Daten dann weiter verarbeitest ist von der Sprache abhängig, da Du diese aber nicht nennst, kann man so nicht helfen und es würde auch nicht in den Bereich Datenbanken gehören

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

zuerst solltest du in beiden Tabellen (Vereine und Zeitungen) je einen eindeutigen Primärschlüssel einführen, der keine fachliche Relevanz hat. Das kann z.B. einfach ein AutoIncrement-Wert sein, der dir eine ID für den Verein bzw. die Zeitung liefert.

Dann führst du eine 3. Tabelle Kooperation ein, die jeweils die ID des Vereins und die ID der Zeitung beinhaltet, die kooperieren. Diese Kombination sollte eindeutig sein und es kann dadurch auch ein Verein mit mehreren Zeitungen kooperieren und eine Zeitung mit mehreren Vereinen.

Diese Kooperationen kannst du dann z.B. per Select und Join auf Vereine und/oder Zeitungen abfragen.

Gruß Martin

P.S. Flashpixx war schneller ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke euch beiden..

super martin, ich glaube, ich habe es jetzt begriffen. super erklärung.

mhh, darf ich fragen, wie so eine kooperations-tabelle konkret aussieht?

also ich trage dort die werte zeitungs-id und sportverein-id ein als int-felder. dann fülle ich die datensätze: z.b. sportverein werder bremen (=1) und dann sage ich im zweiten feld zeitungs-id (=2 für z.b. bildzeitung). ok, aber wie mache ich das, wenn es mehr als eine zeitung ist? kann ja immer nur ein wert bei int eintragen, oder?

wie würde denn so ein select-join aussehen?

Bearbeitet von mb72
Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Kooperationstabelle braucht erstmal nur die beiden IDs von Verein und Zeitung.

Jeder Datensatz in der Verbindungstabelle beschreibt genau EINE Kooperation zwischen EINEM Verein und EINER Zeitung. Wenn ein Verein mit mehreren Zeitungen kooperiert gibt es entsprechend mehrere Sätze in der Koop.tabelle, jeweils mit gleicher Vereins-ID aber unterschiedlicher Zeitungs-ID.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ah, ok, verstehe, boah, wird schwierig mit der pflege der daten, es können ja immer wieder neue zeitungen zum verein kommen... also beim update. will das ja alles per php machen. hätte ich mir nicht sooo schwer vorgestellt.

wenn ich dich nochmal fragen darf, wie würde denn so ein join aussehen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie würde denn so ein select-join aussehen?

Der ist von Deinem DBMS abhängig, allgmein in dieser Form:


select * from tabelle1 join tabelle2, tabelle3 on tabelle1.pk = tabelle2.pk1 on tabelle2.pk2 = tabelle3.pk

Du musst in Deinem Bsp über 3 Tabellen einen Join machen

Bearbeitet von flashpixx
select geändert
Link zu diesem Kommentar
Auf anderen Seiten teilen

sicher kann ich das tun aber vielleicht ist martin so nett und kann mir ein beispiel liefern.. würde mir sehr helfen.. aber danke schonmal für den link! vielleicht kann ich mich ja auch mal revanchieren.

ich wüßte schon gar nicht, was für ein join ich da nehmen muss?

Bearbeitet von mb72
Link zu diesem Kommentar
Auf anderen Seiten teilen

Gut, ein beispiel :


Vereine :

|ID|Vereinsname|strasse|plz|ort|

| 1|    Verein1|      x|  y|  z|

| 2|    Verein2|      x|  y|  z|


Zeitungen

|ID| Zeitungsname | (sonstige Spalten)

| 1| Zeitung 1    |

| 2| Zeitung 2    |

| 3| Zeitung 3    |

| 4| Zeitung 4    |


Zuordung :

|ID| Verein_ID | Zeitung_ID |

| 1|          1|           1|

| 2|          1|           2|

| 3|          2|           2|

| 4|          2|           3|

| 5|          2|           4| 

So, wenn du dir die Tabellen so anlegst, und dann wissen wisst, welche Zeitungen arbeiten mit Verein1 zusammen,

SELECT z.*

FROM Vereine AS v 

   INNER JOIN Zuordung AS zuo ON v.id = zuo.verein_id

   INNER JOIN Zeitungen AS z on zuo.zeitung_id = z.id

WHERE v.Vereinsname = 'Verein1'

Giebt dir dann alle Zeitungen aus die mit mit Verein1 zusammenarbeiten.

Du kommst aber nicht drum rum, wie die anderen da geschrieben haben, dich in sql einzulesen. So nen SEHR einfacher join, das muss einfach von der Hand gehn sowas.

Gruß

Sven

Nachtrag :

Was du auf jedenfall machen solltest, musst, sind on delete trigger auf der Zeitungs und auf der Vereinstabelle in dem fall.

Weil, wenn du jetzt eine Zeitung löschen möchtest, weil sie z.b. nicht mehr existiert, oder einen Verein weil er abgestiegen ist, dann steht immer noch der ganze Krempel in der Zuordnungstabelle. Für sowas giebts Trigger, also wenn was gelöscht wird aus Tabelle Verein, dann lösch alles aus der Zuordnung, wo in der Verein_id Spalte, die id von dem gelöschten Verein drin steht. Das ist zwar kein grosses Problem, aber spätestens hier kommste um halbwegs fundierte Grundkenntnisse in SQL nimmer drum rum.

Bearbeitet von streffin
Link zu diesem Kommentar
Auf anderen Seiten teilen

hi seven,

ertsmal vielen dank für die verständliche erklärung und deine mühe.

Zitat: Was du auf jedenfall machen solltest, musst, sind on delete trigger auf der Zeitungs und auf der Vereinstabelle in dem fall.

Weil, wenn du jetzt eine Zeitung löschen möchtest, weil sie z.b. nicht mehr existiert, oder einen Verein weil er abgestiegen ist, dann steht immer noch der ganze Krempel in der Zuordnungstabelle. Für sowas giebts Trigger, also wenn was gelöscht wird aus Tabelle Verein, dann lösch alles aus der Zuordnung, wo in der Verein_id Spalte, die id von dem gelöschten Verein drin steht. Das ist zwar kein grosses Problem, aber spätestens hier kommste um halbwegs fundierte Grundkenntnisse in SQL nimmer drum rum.

super tipp mit den triggern! ok, also der trigger löscht dann auch nur den datensatz (gelöschten verein) aus der zuordnungstabelle? oder alle?

grüße mario

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn du einen Trigger schreibst, dann hast du die Informationen des Datensatzes den du löschst.

Das heist, dass du damit, ein SQL statement schreiben kannst, und über die ID die du da hast, kannst du alle Datensätze aus der Zuordnungstabelle löschen, die mit diesem gelöschten Datensatz zusammenhängen.

Wie gesagt, da musst du dir ein bisschen was anlesen, weil da kann man ganz böse gegen die Wand rennen bei sowas wenn man nicht genau weis was man tut

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...