2009-05-08 9 views
0

Ich habe eine Tabelle, die Unternehmensinformationen (z. B. Name, Adresse, Geschäftsbeschreibung ...) und eine andere Tabelle mit Benutzerinformationen (z. B. Vorname, Nachname, E-Mail und Kennwort) enthält. Wie verknüpfe ich die Unternehmenstabelle mit der Benutzertabelle, sodass die Firma beim Anmelden ordnungsgemäß mit dem Benutzer verknüpft ist? Würde ich eine Benutzer-ID-Spalte in der Unternehmenstabelle haben?Tabellen in MySql zusammenbinden

+0

Da ich mit CakePHP arbeite, habe ich gelernt, dass ich Assoziationen wie hasOne, hasMany, hasandBelongstoMany und andiesesTo in meinem Modell verwenden kann und es Joins automatisch behandelt ... –

Antwort

4

Unter der Annahme, dass mehrere Benutzer zu einer einzelnen Firma gehören können, aber nur eine Firma mit einem Benutzer verbunden sein kann, würde eine Firma-ID in der Benutzertabelle am sinnvollsten sein.

zwei Tabellen miteinander zu verbinden, wo Sie eine Übereinstimmung zwischen den beiden in allen Fällen erwarten, verwenden Sie ein INNER JOIN:

SELECT u.*, c.companyname FROM users u 
INNER JOIN companies c ON u.companyid = c.companyid 

Offensichtlich ist die obige eine simulierte Abfrage und Bedürfnisse zugeschnitten Ihr Schema/Anforderungen entsprechen.

2

Sie suchen nach joins.

Unternehmen haben eine mit den Benutzern eine Eins-zu-viele-Beziehung wäre, so müssen Sie eine Spalte in der Tabelle user mit einem Namen wie company_id erstellen und es dann so abfragen, Benutzer und deren Unternehmen zu erhalten:

SELECT * FROM users INNER JOIN companies ON users.company_id = companies.id 
+0

:? Wie ist das falsch? Ich lese die Frage noch einmal und danach fragt er. –

+0

Stimmen Sie zu, ich bin mir nicht sicher, warum Ihre Antwort abgelehnt wurde – BrynJ

+0

+1 Von mir ... Siehe auch http://stackoverflow.com/questions/832322/question-about-joining-two-mysql-tables / – Adrien

0

Nein, Sie werden wahrscheinlich eine Eins-zu-viele-Beziehung haben. Eine Firma enthält also viele Mitarbeiter. Aber ein Mitarbeiter gehört nur einer Firma an (um die Dinge einfach zu halten).

Dies erfordert einen Fremdschlüssel in der Benutzertabelle, der auf die ID des Unternehmens verweist.