0

私は2つのテーブルを持っています

members
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| mindex     | smallint(4) | NO   | PRI | NULL    | auto_increment | 
| memberid   | smallint(5) | YES  | MUL | NULL    |                | 
| forenames  | varchar(40) | YES  |     | NULL    |                | 
| surname    | varchar(20) | YES  |     | NULL    |                | 
| nameprefix | varchar(30) | YES  |     | NULL    |                | 
| namesuffix | varchar(50) | YES  |     | NULL    |                | 
| died       | smallint(5) | YES  |     | NULL    |                | 
| notes      | text        | YES  |     | NULL    |                | 
+------------+-------------+------+-----+---------+----------------+

memberships;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| mshipindex | smallint(4) | NO   | PRI | NULL    | auto_increment | 
| memberid   | smallint(5) | YES  | MUL | NULL    |                | 
| msid       | smallint(5) | YES  |     | NULL    |                | 
| mstype     | varchar(20) | YES  |     | NULL    |                | 
| msyear     | smallint(5) | YES  |     | NULL    |                | 
| msposition | varchar(15) | YES  |     | NULL    |                | 
+------------+-------------+------+-----+---------+----------------+

1 年間のメンバーシップ ( memberships.msyear) を検索して、 と を取得memberships.mstypeしたいmembers.surname。これで正しい JOIN 構文を取得できません。

4

2 に答える 2

1

次のようなものを使用します。

select m.surname,
  s.mstype
from members m
left join memberships s
  on m.memberid = s.memberid
where s.msyear = yourYear

デモで SQL Fiddle を参照してください

を使用しLEFT JOINて、メンバーシップ レコードを持っていない可能性があるメンバーも含めて、すべてのメンバーを返しました。メンバーがメンバーシップ テーブルにレコードを持っていない場合は、null が返されます。

JOIN 構文を学習するのに助けが必要な場合は、ここに結合の優れた視覚的な説明があります

于 2012-12-12T11:32:57.390 に答える
0

構文だけが必要な場合は、次のとおりです。

Select *
from members m
inner join membership ms on (m.memberid = ms.memberid)
where memberships.msyear = 2012
于 2012-12-12T11:31:44.900 に答える