2012-04-08 21 views
3

私のmysqlには2つのテーブルがありますが、両方のテーブルの組み合わせたクエリに基づいて結果を抽出したいと思います。私が参加するだけでなく、内部結合を試みたが、何の成功mysql query join/inner join

にtableAの構造は

id userid topic 

1  34  love 
3  64  friendship 
35 574  romance 
32 253  games 
95 633  football 
54 26  cricket 
648 63  music 

TABLEBは

id location  username 
34  Australia krkrff 
64  india  dieiei 
574  pakistan  frkfrf 
253  japan  frfffrk 
633  india  ifirf 
26  Australia riiri 
63  Australia frffjrr 

ありませんにtableAのユーザーIDにとテーブルBのIDには、同じ.bothであることに注意してください同じユーザーのデータを反映します.i tableBの場所の列をフィルタリングしてtableAのデータを表示します。オーストラリアに属し、それは出力を与える必要があり、私はTABLEBとユーザーのトピックを表示することとします クリケット 音楽を愛する

あなたは出力がそのようであるので、34,26 & 63オーストラリアに属していることをTABLEBで見ることができます。場所がインドの場合は、アウトプットは

友情とfootball.pleaseはSQLクエリを書く方法を教えてください。

答えて

7

以下は、あなたが記述しているものを選択する必要があります。

select a.topic 
from tableA a 
join tableB b on b.id = a.userid 
where b.location = 'Australia' -- or whichever location you filter on 

と同等です:あなたはあなたがにtableAのユーザーID「でとして何を意味するかについて詳しく説明してもらえ

select a.topic 
from tableA a 
join tableB b on b.id = a.userid and b.location = 'Australia' 
+0

は、単一のMySQLのクエリには何を使用することができジョイン魅力 – Steeve

+0

@Paul Belloraのように働きましたか? –

1
SELECT a.topic, b.topic FROM tableA a, tableB b WHERE a.id = b.id AND b.location = 'Australia' 
1

私たちがキーとして使用することができないように異なって見えるので、「TableB id is same」と表示されます。

しかし私はそれを理解しているので、あなたはJOINをしたいと思っていますし、TOPICのためだけにSELECTをしたいと思っています。

だから、あなたのクエリは次のようになります。

SELECT t1.topic from table1 t1 JOIN tableB t2 on t2.id = t1.id WHERE t2.location = 'Australia' 
+0

tableAのuseridとtableBのidの列名は異なりますが、値は同じです。 tableAのid値がtableB idカラムに表示されていることを確認して、キーとして使用できるようにしてください – Steeve

1

はこれを試してみてください:

SELECT tableA.topic FROM tableA JOIN tableB 
ON tableA.userid = tableB.id 
WHERE tableB.location = 'Australia';