0

1つのクエリを使用して、2つのテーブルからデータを選択する方法に頭を悩ませてきました。誰かが単一のクエリよりも良い方法を提案できるなら、私はすべての耳です!以前は、簡単に機能する2つのクエリを使用してこれを実行していましたが、1つのクエリの方が優れていると思われるため、学習しようとしました。

私のテーブルの1つは、切り詰められた形でこれに似ています。このテーブルを「メンバー」と呼びます。

ID  |  firstName  |   lastName  | networkingID

そして、私が「ネットワーキング」と呼ぶもう1つのテーブル:

ID  |  websiteURL | facebookURL | twitterURL


私がやろうとしているのは、次のmemberようなテーブルでクエリを実行することです。

SELECT * FROM `member` WHERE `ID`=2

これは、テーブルからデータを返しますmember

ただし、テーブルから関連する値も返したいと思いますnetworkingnetworkingID表の列memberID、の行の列ですnetworking

どうすればこれを行うことができますか?

これまで、Googleで見つけたすべてのJOINを使用して実験しましたが、機能させることができません。私の最良の結果は、LEFT JOINすべての列が存在する場所でしたが、ネットワークテーブルからの結果はすべてNULLでした。

4

5 に答える 5

3
SELECT * FROM member
LEFT JOIN networking
ON member.networkingID=networking.ID
WHERE member.ID=2
于 2012-09-26T15:25:14.523 に答える
0
select * from member a, networking b 
where a.networkingID=b.ID and a.ID = 2
于 2012-09-26T15:29:00.073 に答える
0

共通ID間の単純な結合。内部結合は、ネットワークテーブルにレコードがあることを確認します。そうでない場合、そのメンバーは表示されません。テーブルに何かが結合されているかどうかに関係なく、LEFT JOINすべてのmember行が必要な場合は、これをに置き換えることができますnetwork

 SELECT * FROM member m 
      INNER JOIN networking n 
 ON (m.networkingID = n.id) 
 WHERE m.id = 2;
于 2012-09-26T15:25:16.600 に答える
0
select
   *
from
   member as m
   left outer join
      networking as n
   on
      m.networkingID=n.ID
于 2012-09-26T15:25:26.630 に答える
0

JOINが機能するはずです。

SELECT * FROM member, networking WHERE member.ID=2 AND member.networkingID=networking.ID

member.ID = 2のネットワークデータがない場合、これは空の結果を返します。この場合に結果を取得したい場合は、LEFTJOINを試すことができます。

SELECT * FROM member LEFT JOIN networking ON member.networkingID=networking.ID WHERE member.ID=2
于 2012-09-26T15:27:57.503 に答える