Drei Tabellen mit der vierten vergleichen
am 09.11.2006 12:30:42 von mbetschart_ch
Hallo zusammen
Meine Datenbank umfasst drei Tabellen mit je den Spalten "Datumstart",
"Datumende" und "Anlass".
Mit meinen Kentnissen konnte ich die drei Tabellen mit UNION miteinader
verbinden.
Nun möchte ich einen persönlichen Kalender erstellen und stehe nun
vor folgender Herausforderung:
In einer vierten Tabelle habe ich nur die Spalten "Email", "Name" und
"Hobbies".
Ich möchte nun die vier Tabellen so zusammen verknüpfen, dass wenn
jemand in der Spalte "Hobbies" *Fussball* oder *Fussballspielen* hat
(mit LIKE %...% verknüpfen?) mir als Ausgabe nur die Anlässe mit
"Start"- und "Enddatum" auflistet welche mit *Fussball* zu tun haben.
Mein Ziel:
Ich übergebe die Variabe "Email" an mysql. Zuerst werden dann alle
"Hobbies" ermittelt (können mehrere Zeilen sein zB erste Zeile
*Fusballspielen*, zweite Zeile *Klavierspielen*), welche dann in den
drei anderen Tabellen gesucht werden.
Herzlichen Dank für einen Ansatz meines Problemchens.
Mathias
Re: Drei Tabellen mit der vierten vergleichen
am 09.11.2006 12:47:38 von Gregor Kofler
mbetschart_ch@yahoo.de meinte:
> Hallo zusammen
>
> Meine Datenbank umfasst drei Tabellen mit je den Spalten "Datumstart",
> "Datumende" und "Anlass".
> Mit meinen Kentnissen konnte ich die drei Tabellen mit UNION miteinader
> verbinden.
Warum 3 Tabellen? Warum nicht eine?
> Nun möchte ich einen persönlichen Kalender erstellen und stehe nun
> vor folgender Herausforderung:
> In einer vierten Tabelle habe ich nur die Spalten "Email", "Name" und
> "Hobbies".
> Ich möchte nun die vier Tabellen so zusammen verknüpfen, dass wenn
> jemand in der Spalte "Hobbies" *Fussball* oder *Fussballspielen* hat
> (mit LIKE %...% verknüpfen?) mir als Ausgabe nur die Anlässe mit
> "Start"- und "Enddatum" auflistet welche mit *Fussball* zu tun haben.
Urgs.
>
> Mein Ziel:
> Ich übergebe die Variabe "Email" an mysql. Zuerst werden dann alle
> "Hobbies" ermittelt (können mehrere Zeilen sein zB erste Zeile
> *Fusballspielen*, zweite Zeile *Klavierspielen*), welche dann in den
> drei anderen Tabellen gesucht werden.
>
> Herzlichen Dank für einen Ansatz meines Problemchens.
Du möchtest dich über "Normalisierung" (deine "Datenbank" schafft noch
nicht mal die erste Normalform) und "Relationen" informieren. Sonst wird
das nur unendlicher Murks.
Gruß, Gregor
--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum
Re: Drei Tabellen mit der vierten vergleichen
am 09.11.2006 22:46:55 von Joachim Zobel
Am Thu, 09 Nov 2006 03:30:42 -0800 schrieb mbetschart_ch:
> Meine Datenbank umfasst drei Tabellen mit je den Spalten "Datumstart",
> "Datumende" und "Anlass".
> Mit meinen Kentnissen konnte ich die drei Tabellen mit UNION miteinader
> verbinden.
>
> Nun möchte ich einen persönlichen Kalender erstellen und stehe nun
> vor folgender Herausforderung:
> In einer vierten Tabelle habe ich nur die Spalten "Email", "Name" und
> "Hobbies".
> Ich möchte nun die vier Tabellen so zusammen verknüpfen, dass wenn
> jemand in der Spalte "Hobbies" *Fussball* oder *Fussballspielen* hat
> (mit LIKE %...% verknüpfen?) mir als Ausgabe nur die Anlässe mit
> "Start"- und "Enddatum" auflistet welche mit *Fussball* zu tun haben.
>
>
> Mein Ziel:
> Ich übergebe die Variabe "Email" an mysql. Zuerst werden dann alle
> "Hobbies" ermittelt (können mehrere Zeilen sein zB erste Zeile
> *Fusballspielen*, zweite Zeile *Klavierspielen*), welche dann in den
> drei anderen Tabellen gesucht werden.
Du filterst die Anlässe über einen Subselect mit exists mit den Hobbies.
Auf Grund der UNION musst Du dreimal den selben Subselect schreiben. Nimm
den Einwand von Gregor Kofler ernst. Eine vergurkte Datenbankstruktur wird
jede weitere Entwicklung erschweren. Je mehr Anwendungscode diese
Datenbankstruktur benutzt, desto schwerer ist sie zu korrigieren.
Eventuell lächelst Du jetzt traurig, weil Du das zwar weisst, die vor Dir
liegende Datenbank aber bereits 10 Jahre Vergurkung hinter sich hat ...
GruÃ,
Joachim