2012-02-26 8 views
0

私は2つのテーブルを持っている:同じ選択で2番目のテーブルから関連データを取得するにはどうすればよいですか?

'people' 
    id | name | which_image 
    -------------------------------- 
    1 | Joey | 1 
    2 | Bobby | 2 
    3 | Jimmy | 3 

'images' 
    id  | filename 
    -------------------------------- 
    1  | joe_face.jpg 
    2  | bob_angry.jpg 
    3  | jim_laughs.jpg 

は、どのように私は1人のカップルのための「人」テーブルのすべての列を取得するために選択して、同じクエリで、そのファイル名を取得することができますか?私はこれを試してみたが、それは空のセットを返します:「画像」には、実際の外部キーが存在しないので、次のようにサブ選択を使用し、

SELECT p.*, 
     i.filename 
FROM people p 
     INNER JOIN images i 
     ON p.which_image = i.id 
WHERE p.id = 1 
     OR p.id = 3; 
+0

あなたのクエリは、私はPでの問題を考える正しいです。* .... p.id、p.nameのようなテンションに列名を試してみてください。.. –

+0

このクエリは、正しい完了です。 –

+0

あなたが使っているMysqlのバージョン。 –

答えて

0

SELECT p.*, i.filename FROM people p, images i 
WHERE (p.id = 1 OR p.id = 3) 
    AND p.which_image = i.id 
+0

私はこれらすべての答えがうまくいくと思いますが、私はあなたのことが一番好きです。それはまだ私のような誰かにシンプルで分かりやすいものです:-)ありがとうございました。 – Eric

+0

ありがとうエリック。あなたは正しいです。 3つすべてが動作します。私は、あなたが関係について学ぶことをお勧めします。 –

0

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

SELECT p.*, (select filename from images i where i.id=p.which_image) as filename 
FROM people p 
WHERE p.id in (1,3) 
関連する問題