2016-05-17 4 views
0

私はこの2つのテーブルがあります。joinを使って最初のテーブルの行を取得する方法?

// one 
+----+-------+ 
| id | value | 
+----+-------+ 
| 1 | aaa | 
| 2 | bbb | 
| 3 | ccc | 
+----+-------+ 

// two 
+----+-------+ 
| id | value | 
+----+-------+ 
| 2 | ddd | 
| 3 | eee | 
| 4 | fff | 
+----+-------+ 

そして、ここでは私のクエリです:

SELECT one.value FROM one JOIN two ON one.id = two.id 

そしてここでは、現在の結果である:

// 4 rows 
+-----+ 
| bbb | 
|  | 
| ccc | 
|  | 
+-----+ 

そしてここでは、予想出力されます。

// 2 rows 
+-----+ 
| bbb | 
| ccc | 
+-----+ 

ご覧のとおり、私はのみにしようとしていますoneテーブルから行を選択してください。どうやってやるの?

+1

あなたの質問が正しいようです。私はそれがあなたのサンプルデータに基づいて4つの結果を返すとは思わない、それはあなたの期待した結果を返す必要があります。 – sgeddes

+0

そして、作業フィドル:http://sqlfiddle.com/#!9/a70df8/1 – sgeddes

+0

@sgeddesああ、ありがとう。私は本当の問題をシミュレートできなかったと思う。 – stack

答えて

1

あなたは、SQLフィドルでこれをしようとした場合:

SELECT post_id, COUNT(*) from events 
GROUP BY post_id 
ORDER BY COUNT(*) DESC 

あなたは、各qandaは、したがって、あなたがpost_idにマッチしたすべてのイベントを取得している、いくつかの関連するイベントを持っていることに気づくことができます。

あなたがDISTINCTを追加し、2つの行を期待している場合:

SELECT DISTINCT q.id, ee.table_code, q.subject 
FROM 
    qanda q JOIN 
    events ee on ee.post_id = q.id and 
     ee.author_id = 31 and 
     ee.table_code = 15 
+0

ありがとう.. upvote – stack

+0

あなたは何を望んでいるのか知っていますか?私が手に入れたいのはひとつの行だけですが、 'subject'が空である場合、' related'カラムを使ってその主題を見つける必要があります。それは可能ですか? – stack

+0

は 'CASE WHEN ... THEN ...'構造を見ています。 – Bulat

1

これは、これは基本的に等が

に参加するあなたは、等がここに参加についての詳細を参照することができます

SELECT table1.value FROM table1, table2 WHERE table1.id = table2.id 

のために動作しますhere

+0

ありがとう.. upvote – stack

関連する問題