2016-05-26 14 views
1

DBから正しいデータを取得しようとしています。存在する場合は別のテーブルのデータを表示

私はテーブルのカップルを持っている:

events_template   laser_events 
| id | something |  | id | extid | added | 
==================  =========================== 
| 1 | something |  | 1 | 7 | added | 
| 2 | something |  | 2 | 4 | added | 
| 3 | something |  | 3 | 2 | added | 
| 4 | something |  | 4 | 1 | added | 
| 5 | something |  | 5 | 9 | added | 
| 6 | something |  | 6 | 3 | added | 
| 7 | something | 
| 8 | something | 
| 9 | something | 
| 10 | something | 
| 11 | something | 
| 12 | something | 
| 13 | something | 
| 14 | something | 

私は何をしようとしていますが、私に一緒にidとextidによってリンクされ、両方のテーブルの結果が表示されますいくつかの出力を得るが、まだからの結果を示していますevents_templateに一致するlaser_events行がない場合でも

私は

SELECT 
    id, 
    extid 
FROM 
    events_template, 
    laser_events 
WHERE 
    events_template.id = laser_events.ext_id; 

のようなものを試してみた。しかし、一致するlaser_events行がない場合、それは私のevents_template行は表示されません。

助けていただけたら幸いです!

+0

'TABLE1の構文を使用しないでください、table2のWHERE blahblahblah'。その構文は、INNER JOINとANSI-92の構文に置き換えられました。* LEFT JOINなど。古い構文は20年以上も経ちましたが、読みにくく、間違いを起こしやすくなりました。いくつかのシステムでは、すべての場合*で意図したとおりに実際には動作しません(したがって、これらのシステムでは推奨されません)*。 – MatBailie

答えて

2

あなたはLEFT JOINを使用する必要があります。

SELECT e.id, l.ext_id 
FROM events_template e 
LEFT JOIN laser_events l ON e.id = l.ext_id; 
+0

それは素晴らしい人です。私が思っていたようなもう一つのことは思っていましたが、私が期待しているように働いていません。また、「where e.timestamp> '2016-05-25 07:30:00'を最後に追加すると、events_templateのタイムスタンプが2016-05-25 07:30:00より大きい場合にのみ結果を表示したい – Steve

+0

@Steveこれは 'LEFT JOIN'の' timestamp> '2016-05-25 07:30:00'' *と関係のない 'events_template'テーブルからすべてのレコードを返すべきです。 –

+0

あなたは間違いなく私はl.timestampでやっていました(私が作ったテーブルは実際そうでないので名前が混ざりました:P)ありがとう! – Steve

関連する問題