2012-01-21 14 views
0

2つのテーブルがあるとします。最初のものは、ユーザーIDとその最初の名前を保持します。 2番目にはユーザーIDとその姓が格納されますが、ユーザーが姓を指定したかどうかによって、この表の行が存在する場合と存在しない場合があります。mysql(i):複数のテーブルからデータを選択していますか?

私は姓と名の両方を選択したいが、最初の名前だけが存在する場合は、それを自分で選択するだけです。

第2のテーブルの行が存在しない場合、それは何も返さないので、私はこのようなものを使用するカント

$db->query("select firstname.fname, lastname.lname from firstname, lastname where firstname.userid = lastname.userid"); 

感謝を。

+2

今、さまざまなJOINSについて学び始める時間です。http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.htmlを読んでください。 ..それは右のトラックにあなたを置く必要があります非常に良い説明です –

+0

theresは結合なしでそれを行う方法はありません? ; p –

+1

その性質上、2つのテーブルからデータを取得するクエリを実行すると、結合が必要になります。異なるSQL結合について学習する価値があります。また、それらを使用するタイミングと方法 –

答えて

2
SELECT f.fname, l.lname 
FROM firstname f 
    LEFT JOIN lastname l 
     ON f.userid = l.userid 

このようなものを返します:NULLはボブが

JOIN姓を持っていないことを意味

fname | lname 
John | Doe 
Bob | NULL 

あなたはので、あなたの例で使用しているデカルト積よりもパフォーマンスです{firstame,lastname}のすべての可能な組み合わせを生成するのではなく、意味のあるもの(同じユーザーIDを持つもの)

+0

fはfirstnameのエイリアスですso soあなたがあなたのクエリでファーストネームを参照するとき、あなたはfを使うことができます、これは簡潔さのためです – Dalen

関連する問題