2009-05-08 5 views
0

会社情報(名前、住所、会社の説明など)とユーザー情報(姓、名字、メールアドレス、パスワード)を含むテーブルがあります。会社テーブルをユーザテーブルに結び付けて、ユーザがログインしたときに会社がユーザと適切に関連付けられるようにするにはどうすればよいですか?私は会社のテーブルにユーザーIDの列を持っていますか?MySqlでテーブルを結ぶ

+0

私はCakephpを使っているので、私のモデルにhasOne、hasMany、hasandBelongstoMany、およびbelongsToのような関連付けを使用でき、自動的に結合を処理することがわかりました... –

答えて

4

複数のユーザーが1つの会社に所属し、1つの会社のみがユーザーに関連付けられていると仮定すると、ユーザーテーブルの会社IDが最も適しています。あなたはすべてのケースでは、両方が一致したことを期待している

が一緒に2つのテーブルを結合するには、INNER JOINを使用します。
SELECT u.*, c.companyname FROM users u 
INNER JOIN companies c ON u.companyid = c.companyid 

明らかに、上記のシミュレートされたクエリであり、あなたのスキーマ/要件に合致するように調整必要。

2

あなたはjoinsを探しています。あなたがのcompany_idのような名前を持つユーザー表の列を作成し、ユーザーとその会社を取得するには、このようにそれを照会する必要があるので、

企業は、ユーザーとの1対多の関係を持っているでしょう:

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

:?これはどうやって間違っている?私は質問を読み返しており、これが彼が求めていることです。 –

+0

あなたの答えがなぜ投票されないのか分かりません – BrynJ

+0

+1私から... http://stackoverflow.com/questions/832322/question-about-joining-two-mysql-tablesも参照してください/ – Adrien

0

いいえ、おそらく1対多の関係になります。だから1社には多くの従業員がいる。しかし、1人の従業員は1つの会社にしか属しません(物事を単純に保つため)。

これは、会社のIDを指すユーザーテーブル内の外部キーを必要とします。

関連する問題