2016-03-26 14 views
0

リターンを登録しよう私は2つのテーブルました:LEFTでSELECT NULL値

記事

id | id_author | content | year 
1 | 1   | hello | 2015 
2 | 1   | world | 2016 
3 | 2   | hi  | 2016 

お気に入り

id | id_author | id_post | year 
1 | 3   | 2  | 2016 

そして私はSELECTをしたいがpostsデータをfavoritesでを使用して取得する。だから、私はやった:( 私はid_authorを持つユーザーでログインしています考慮して= 3)

SELECT p.id, p.id_author, p.content, p.year, f.id_post 
FROM favorites f 
LEFT JOIN posts p 
ON f.id_post = p.id 
WHERE f.id_author = 3 
ORDER BY f.id 
DESC 

だから、私がやった:

if(count($sql) > 0) { 
    var_dump($sql); 
} 
$sqlが上記のクエリに等しいです)

しかし、出力は次のようになります。

array(1) { 
    [0]=> 
    array(5) { 
    ["id"]=> 
    NULL 
    ["id_author"]=> 
    NULL 
    ["content"]=> 
    NULL 
    ["year"]=> 
    NULL 
    ["id_post"]=> 
    string(1) "2" 
    } 
} 

なぜ戻っているNULLid_author = 3WHERE節の述語で使用されるフィールドに関するあいまいさがあるよう

SELECT p.id, p.id_author, p.content, p.year, f.id_post 
FROM favorites f 
LEFT JOIN posts p 
    ON f.id_post = p.id 
WHERE id_author = 3 
ORDER BY f.id DESC 

答えて

2

は、次のクエリは、有効な構文的ではありませんOPのスキーマとデータを与えられました。

あなたはおそらくWHERE句で使用されているLEFT JOIN操作のテーブルのフィールドを意味p.id_author = 3を、持っています。これによりLEFT JOININNER JOINになり、結果は得られません。クエリは今ある...私は間違った状態を書いた、

WHERE f.id_author = 3 
+0

ごめんなさい、私は私の質問を編集していますが、実際には何の曖昧さが存在しない:だから、あなたはおそらく使用する必要があります。 – Igor

+0

@Igorこの場合、plsは投稿を削除します。 – Shadow

関連する問題