2012-04-03 2 views
2

hallo i Tabellen wie dieses zu erhalten:die Ergebnisse aus zwei Tabellen Mit Informationen aus einem dritten ein

Personen: person_id, Name dann habe ich Tabellen viele Langauge, die die Sprachen Menschen enthalten sprechen, Die Tabellen selbst haben nur die IDs. Englisch

: zum Beispiel person_id

dann auch eine Tabelle Ich habe das enthält, was Schulen, die sie lehren, in, auf Tabellen zum Beispiel aufgeschlüsselt:

havard: person_id

Um diese Leute zu bekommen, die an havard lehren und auch Englisch sprechen, verwende ich die folgende Abfrage:

SELECT * FROM english LEFT JOIN havard.person_id = english.person_id 

Dies wird die ID der Person zurückgeben, die Englisch sprechen kann und an havard unterrichtet. Wie kann ich dieses Ergebnis verwenden, um den Namen dieser Personen aus der Personentabelle zu erhalten? Es ist leicht peasy mit PHP, aber ich frage mich, ob es auch mit mysql machbar ist.

Antwort

2

Hier ist eine Frage, die ich glaube, Ihre Frage beantwortet:

SELECT person.name 
FROM 
    english 
    JOIN harvard ON havard.person_id = english.person_id 
    JOIN persons ON persons.person_id = harvard.person_id 

Allerdings würde ich STARK empfehlen gegen die aktuelle Tabellenstruktur. Sie sollten nicht viele Tabellen für Sprachen und viele Tabellen für Schulen haben. Dies wird vollständig wartbaren ...

Stattdessen sollten Sie eine einzelne Sprachtabelle haben, und eine einzige Schule Tisch. Auf diese Weise erfordert eine neue Sprache oder Schule, die zu Ihrer Tabelle hinzugefügt wird, keine Schema- oder Codeänderungen.

Um die many-to-many-Beziehungen zu behandeln, könnten Sie ein Schema ähnlich die folgenden verwenden:

Sprache

  • ID
  • Namen

Schule

  • ID
  • Namen

Language_Person

  • LANGUAGE_ID
  • person_id

School_Person

  • School_ID
  • person_id
+0

Ich stimme zu, dass dies ein viel besseres Schema ist – JDD

+0

Danke Mann, guter Rat. – Ray

+0

Verändert es irgendetwas, dass eine Sprache im Grunde von einer unbestimmten Anzahl von Menschen gesprochen werden kann, kann auch ein Lehrer (in der Theorie natürlich) an einer unbegrenzten Anzahl von Schulen unterrichten? – Ray

1

SELECT FROM person.name (Englisch INNER JOIN harvard ON havard.person_id = english.person_id) INNER JOIN Personen persons.person_id = harvard.person_id WHERE persons.person_id = "

+0

danke für die Eingabe. – Ray

Verwandte Themen