Hallo zusammen,
bin in PHP und MySQL eigentlich ziemlich fit, komme aber bei folgender Datenbankstruktur gedanklich nicht weiter:
Inhaltlich geht es bei der Datenbank um die Organisation von Nachhilfe - Verknüpfungen. Alle Projektteilnehmer stehen mit Namen etc. in der Tabelle "people". Zusätzlich möchte ich aber in der Lage sein, den Personen in "people" individuell Eigenschaften zuzuordnen. Das kann zum Beispiel die Klasse oder Schule oder aber auch eine Kontonummer sein. Dazu soll ein Eintrag in "people_attributes" existieren, bei dem "content" z.B. "XYZ Schule" ist und das Feld "attributes" eine Zahl enthält, die diese Eigenschaft als die Schule-Eigenschaft identifiziert (über "storage_attributes").
Weiterhin können jeder Person aus "people" über die Tabelle "subjectlinks" Fächer zugeordnet werden. Dabei wird über das Feld "sid" eine Zahl angegeben, die das Fach angibt und über "teach" bzw. "learn" wird festgelegt, ob diese Person das Fach unterrichtet oder lernen möchte. Eine Person kann merhere Fächer lernen / unterrichten aber auch manche Fächer lernen und andere unterrichten.
Tabelle: people
pid (INT, Primary, AI)
firstname (VARCHAR)
surname (VARCHAR)
usw.
Tabelle: people_attributes
paid (INT, Primary, AI)
pid (INT, ForeignKey zu people.pid)
attribute (INT, ForeignKey zu storage_attributes.aid)
content (VARCHAR, z.B. "XYZ Schule" oder "6" oder "598732354" etc.)
Tabelle: storage_attributes
aid (INT, Primary, AI)
name (VARCHAR ----> z.B. "Schule" oder "Jahrgangsstufe" oder "Kontonummer")
Tabelle: subjectlinks
slid (INT, Primary, AI)
pid (INT, ForeignKey zu people.pid)
sid (INT, ForeignKey zu storage_subjects.sid)
teach (BOOLEAN)
learn (BOOLEAN)
Tabelle: storage_subjects
sid (INT, Primary, AI)
name (VARCHAR -----> z.B. "Mathematik", "Deutsch", "Englisch", etc.)
Nun zum Ziel der gesuchten Abfrage: Ich brauche eine Abfrage, die mir beispielsweise alle Personen anzeigen, die ein bestimmtes Fach unterrichten (sagen wir z.B. "Mathematik"). Die Abfrage soll folgende (sichtbare) Felder enthalten:
people.*, people_attributes.content (wobei hier der people_attributes Eintrag gemeint ist, der die Jahrgangsstufe enthält), storage_subjects.name
Ich hoffe ich konnte diesen Datenbankausschnitt und das Abfrage-Ziel verständlich schildern. Ich probiere schon die ganze Zeit hin und her - kriege diese Abfrage so aber nicht hin. Vielleicht hat ja jemand von euch eine Idee? Wäre auf jeden Fall Klasse und ich würde mich sehr freuen.
Viele Grüße
Johnny
bin in PHP und MySQL eigentlich ziemlich fit, komme aber bei folgender Datenbankstruktur gedanklich nicht weiter:
Inhaltlich geht es bei der Datenbank um die Organisation von Nachhilfe - Verknüpfungen. Alle Projektteilnehmer stehen mit Namen etc. in der Tabelle "people". Zusätzlich möchte ich aber in der Lage sein, den Personen in "people" individuell Eigenschaften zuzuordnen. Das kann zum Beispiel die Klasse oder Schule oder aber auch eine Kontonummer sein. Dazu soll ein Eintrag in "people_attributes" existieren, bei dem "content" z.B. "XYZ Schule" ist und das Feld "attributes" eine Zahl enthält, die diese Eigenschaft als die Schule-Eigenschaft identifiziert (über "storage_attributes").
Weiterhin können jeder Person aus "people" über die Tabelle "subjectlinks" Fächer zugeordnet werden. Dabei wird über das Feld "sid" eine Zahl angegeben, die das Fach angibt und über "teach" bzw. "learn" wird festgelegt, ob diese Person das Fach unterrichtet oder lernen möchte. Eine Person kann merhere Fächer lernen / unterrichten aber auch manche Fächer lernen und andere unterrichten.
Tabelle: people
pid (INT, Primary, AI)
firstname (VARCHAR)
surname (VARCHAR)
usw.
Tabelle: people_attributes
paid (INT, Primary, AI)
pid (INT, ForeignKey zu people.pid)
attribute (INT, ForeignKey zu storage_attributes.aid)
content (VARCHAR, z.B. "XYZ Schule" oder "6" oder "598732354" etc.)
Tabelle: storage_attributes
aid (INT, Primary, AI)
name (VARCHAR ----> z.B. "Schule" oder "Jahrgangsstufe" oder "Kontonummer")
Tabelle: subjectlinks
slid (INT, Primary, AI)
pid (INT, ForeignKey zu people.pid)
sid (INT, ForeignKey zu storage_subjects.sid)
teach (BOOLEAN)
learn (BOOLEAN)
Tabelle: storage_subjects
sid (INT, Primary, AI)
name (VARCHAR -----> z.B. "Mathematik", "Deutsch", "Englisch", etc.)
Nun zum Ziel der gesuchten Abfrage: Ich brauche eine Abfrage, die mir beispielsweise alle Personen anzeigen, die ein bestimmtes Fach unterrichten (sagen wir z.B. "Mathematik"). Die Abfrage soll folgende (sichtbare) Felder enthalten:
people.*, people_attributes.content (wobei hier der people_attributes Eintrag gemeint ist, der die Jahrgangsstufe enthält), storage_subjects.name
Ich hoffe ich konnte diesen Datenbankausschnitt und das Abfrage-Ziel verständlich schildern. Ich probiere schon die ganze Zeit hin und her - kriege diese Abfrage so aber nicht hin. Vielleicht hat ja jemand von euch eine Idee? Wäre auf jeden Fall Klasse und ich würde mich sehr freuen.
Viele Grüße
Johnny
Kommentar