Autor |
Beitrag |
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 22.06.09 14:17
Moin!
Ich hab mal wieder ein (MySQL-)Problem und steh auf´m Schlauch...
Hier das abstrakte Problem: Ich habe zwei Tabellen, t1 (id,a,b,c) und t2 (id,name), wobei t1.a auf t2.id verweist, allerdings t1.b zeigt auch auf t2.id. Zum besseren Verständnis: t1 enthält einen Vorgang, der von zwei Leuten bearbeitet wird (a,b), deren Details in t2 vorgehalten werden.
Wie formuliere ich nun ein SELECT, dass mir die Datensätze aus t1 mit den Namen aus t2 ergänzt abliefert?!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 22.06.09 14:24
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Narses 
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 22.06.09 14:27
Moin!
BenBE hat folgendes geschrieben : | SQL-Anweisung 1:
| SELECT t.*, pa.*, pb.* FROM t1 AS t INNER JOIN t2 AS pa ON t1.a = pa.id INNER JOIN t2 AS pb ON t1.b = pb.id WHERE 42 | |
Ich hab aber nur eine Personen-Tabelle, das ist ja mein Problem...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 22.06.09 14:34
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Narses 
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 22.06.09 14:40
Moin!
Ah, OK.  Ich probier das mal aus, danke erstmal.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 22.06.09 14:57
Sind die Felder a, b und c für die Personen-IDs gedacht? Dann stimmt Deine Normalisierung nicht.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 22.06.09 15:09
DeddyH hat folgendes geschrieben : | Sind die Felder a, b und c für die Personen-IDs gedacht? Dann stimmt Deine Normalisierung nicht. |
Solange überhaupt normalisiert ist, passt's doch  Außerdem ist das Beispiel rein fiktiv - Ähnlichkeiten zu real existierenden Datenbanken sind sicherlich REIN ZUFÄLLIG! 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 22.06.09 15:11
Wer's glaubt, wird selig 
|
|
Narses 
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 22.06.09 16:21
Moin!
DeddyH hat folgendes geschrieben : | Sind die Felder a, b und c für die Personen-IDs gedacht? Dann stimmt Deine Normalisierung nicht. |
Zumindest c ist keine Personen-ID, sondern einfach eine zusätzliche Info des Vorgangs. Kannst du das mal etwas erläutern?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 22.06.09 16:50
Wenn ich das richtig verstanden habe, können einem Vorgang bis zu 2 Personen zugeordnet sein, wohingegen vermutlich jede Person mehreren Vorgängen zugeordnet sein kann, ist das so richtig? Das wäre ja dann die klassische m:n-Beziehung, die man über eine Zwischentabelle auflöst. Wenn es später mal mehr mögliche Personen je Vorgang werden sollten, musst Du bei Deiner bisherigen Variante die Tabellenstruktur ändern, was bei meiner nicht nötig ist.
|
|
Narses 
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 22.06.09 17:40
Moin!
DeddyH hat folgendes geschrieben : | Wenn ich das richtig verstanden habe, können einem Vorgang bis zu 2 Personen zugeordnet sein, wohingegen vermutlich jede Person mehreren Vorgängen zugeordnet sein kann, ist das so richtig? |
Im Prinzip ja, es sind allerdings immer genau 2 Personen einem Vorgang zugeordnet (kann sich auch nicht ändern), also 2:n.
DeddyH hat folgendes geschrieben : | Das wäre ja dann die klassische m:n-Beziehung, die man über eine Zwischentabelle auflöst. |
Wenn es n:m wäre, hätte ich eine weitere Tabelle, ja.
DeddyH hat folgendes geschrieben : | Wenn es später mal mehr mögliche Personen je Vorgang werden sollten, musst Du bei Deiner bisherigen Variante die Tabellenstruktur ändern, was bei meiner nicht nötig ist. |
Welche Version meinst du? Habe in deinen Beiträgen keinen Vorschlag gesehen?
Und kannst du nochmal erläutern, was du mit "Normalisierung" bezogen auf den Beitrag oben meinst?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 22.06.09 17:46
Gut, wenn es immer genau 2 Personen sind, ist das kein Problem. Ich hatte hingegen angenommen, dass es bis zu 2 Personen sein könnten, da wäre die Variante mit Zwischentabelle (die ich mit "meiner" meinte) die bessere Lösung gewesen, da man sonst mit INNER JOINs kein Ergebnis bekommt, wenn auch nur eins der beiden Felder NULL ist.
|
|
Narses 
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 22.06.09 18:51
Moin!
Alles klar, funktioniert.  Vielen Dank an alle "Mitarbeiter".
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
|