Antworten auf deine Fragen:
Neues Thema erstellen

MySQL Verständnis Primary/Secondary Key

Dimitrj

Nicht mehr ganz neu hier

Hi Leute

Ich tu mir schon einige Zeit etwas schwer bei dem Verständnis von Datenbankverknüpfungen:

Ich habe eine Tabelle 1, die einen Secondary Key enthält.
Gibt es eine Abfrage, die mir den Tabelle1-Datensatz ausgibt und den Secondary Key darin automatisch durch den entsprechenden Datensatz in der Tabelle 2 ersetzt?
Oder muss ich das wirklich alles ins PHP und die MySQL-Abfrage einbauen? Welchen Sinn hätte dann die Verknüpfung dieser Felder?
Einzig die Absicherung, dass man in Tabelle 1 keinen Secondary Key eintragen kann, der in der Tabelle 2 nicht schon als Primary existiert?

Gespannt auf die Antwort,
Dimitrj
 

Dimitrj

Nicht mehr ganz neu hier

AW: MySQL Verständnis Primary/Secondary Key

Danke für die schnelle Antwort!
Ich komme nur leider grad nicht dahinter wie ich den genau Anwenden soll.
Ich bitte um Erleuchtung in Form eines SQL-Befehls anhand des folgenden Beispiels:

Erwünschte Ausgabe:

1 | Ich | Will | Huhn

Tabelle1:
PKey | FKey | FKey | ...
----------------------------
1 | 1 | 2 | Huhn

Tabelle2:
Pkey | ...
------------
1 | Ich
2 | Will

SELECT * FROM Tabelle1 INNER JOIN Tabelle2 gibt mir einen crossjoin obwohl ich die Keys "verknüpft" habe...

Danke im Voraus für die Hilfe!

Dimitrj
 

Duddle

Posting-Frequenz: 14µHz

AW: MySQL Verständnis Primary/Secondary Key

In diesem Fall (der mir nach Entwurfsfehler aussieht) musst du wohl mehrmals joinen und jeweils explizit angeben, welche Keys zusammengehören. Stichwort: ON


Duddle
 

Dimitrj

Nicht mehr ganz neu hier

AW: MySQL Verständnis Primary/Secondary Key

Warum Entwurfsfehler? Hast du einen Hinweis?
Dürfen nicht 2 Felder von Tabelle1 mit Tabelle2 verknüpft sein?

Ich habe jetzt den Join glaub rausbekommen, aber es gibt ein leeres Resultat zurück. Mir fehlt einfach der letzte Zacken Erkenntnis -.-

Join:
SELECT buchung.id, konti.konto, konti.konto, betrag, datum, kunde, beschreibung, auftragsnummer
FROM buchung
INNER JOIN konti
ON buchung.soll=konti.id
AND buchung.haben=konti.id

Bitte um Verbesserungsvorschläge. Die Tabelle Konti liefert die Kontonamen, in der Tabelle Buchung sind die Felder Soll und Haben mit der id von Konti verknüpft.

Gruss,
Dimitrj
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: MySQL Verständnis Primary/Secondary Key

Ich bleibe mal bei deinem ersten Beispiel:
Code:
SELECT * 
FROM Tabelle1 t1
INNER JOIN Tabelle2 t2a
ON t1.FKey1 = t2a.Pkey
(ich hab hier mal Fkey1 indiziert, dein Beispiel hat 2 gleichnamige Spalten was offensichtlich nicht möglich sind)

Diese Abfrage würde dir ein Ergebnis ähnlich folgendem bringen:
Code:
t1.PKey | t1.FKey1 | t1.FKey2 | ...      | t2a.PKey | ...
1           | 1             | 2             | Huhn | 1             | Ich
In diesem Ergebnis fehlt die zweite Verknüpfung, also müssen wir die Ergebnistabelle nochmal mit Tabelle2 joinen:

Code:
SELECT * 
FROM Tabelle1 t1
INNER JOIN Tabelle2 t2a
ON t1.FKey1 = t2a.Pkey
INNER JOIN Tabelle2 t2b
ON t1.FKey2 = t2b.Pkey

Das sollte dann das ergeben:
Code:
t1.PKey | t1.FKey1 | t1.FKey2 | ...      | t2a.PKey | ...   | t2b.PKey | ...
1           | 1             | 2             | Huhn | 1             | Ich | 2              | Will

Daraus holst du dir im SELECT selbst alles was du tatsächlich brauchst. Übrigens hilft es (mir immer) sehr, sich diese Ergebnisse direkt in PHPMyAdmin o.ä. Frontends anzuschauen, falls das zur Verfügung steht.


Warum in der echten Anwendung Soll und Haben auf einen - den gleichen - Datensatz verweisen ist mir vorerst ein Rätsel. Soll und Habensind für mich zwei reelwertige Zahlen. Aber egal, eure Entwickler werden sich dabei schon was gedacht haben (zumindest hofft man das).


Duddle
 

Dimitrj

Nicht mehr ganz neu hier

AW: MySQL Verständnis Primary/Secondary Key

Tausend Dank, jetzt klappts! Das hätte ich selbst niemals hingekriegt :)

Zum Verweisen auf den Datensatz: Das grosse Problem ist, dass ich der "Entwickler" bin ;)
Der vorherige Join war also auch von mir zusammengeschustert - daher für Könner eher rätselhaft.

Ich habe eine Tabelle mit Buchungen worin die Spalten "soll" und "haben" sind.
Dann habe ich dazu eine Tabelle als Kontenliste.
Und in der Tabelle Buchungen ist dann also eingetragen von wo nach wo gebucht wird.
Aber ich glaube das hast du bereits durchschaut...

Nochmals vielen Dank für die Hilfe!

Dimitrj
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.485
Neuestes Mitglied
derThomas
Oben