2016-12-13 31 views
0

私はすべての投稿を取得しようとしています。すべての投稿を取得し、ユーザーが好きな人に投稿してください

私は論文と3台持っている:

-posts

+----+---------+---------+ 
| id | user_id | text | 
+----+---------+---------+ 

-votes

+----+-----------+---------+---------+ 
| id | type_vote | user_id | post_id | 
+----+-----------+---------+---------+ 

-users

+---------+---------+ 
| id_user | etc.. | 
+---------+---------+ 

私は他の回答をチェックしますが、私の問題は解決しません。私は何をしないのです。..

SELECT id, text, 
      IF('$uid' IN (SELECT id FROM votes WHERE user_id='$uid'), 1, 0) AS liked 
      FROM posts 
      INNER JOIN users 
      ON users.id_user = posts.user_id 
      WHERE posts.user_id = '$uid' OR posts.user_id 
     ORDER BY posts.created_at desc 

をしかし、それは、ユーザーが作成した投稿のみを返し、気に入った変数は動作しません。また、私はこのコードを試してみましたか?

ありがとうございます!

EDIT:

私はNULLと1場合は、idが存在する場合は0で、それを変換する方法を、適切なポストの横票のIDを取得するために管理?

+----+------+---------+---------------+ 
    | id | text | user_id |liked   | 
    +----+------+---------+-----+---------+ 
    | 1 | blab | 5476zef |NULL OR post_id| 
    +----+------+---------+---------------+ 
+0

どのdbmsを使用していますか? (いくつかの非ANSI SQLがあります...) – jarlh

+0

こんにちは、私はmysqlを使用しています – Efbi

+0

サンプルテーブルのデータと期待される結果を追加してください。 (フォーマットされたテキストと同様に) – jarlh

答えて

0

私が「好き」と「票」との関係について確認していない:

SELECT p.*,(SELECT id from votes where user_id = '$uid' AND post_id = p.id) as liked from posts p 

は、私のような結果を得ます。しかし、すべての投稿と追加情報が必要な場合は、left joinまたは相関サブクエリが気になります。

select p.* 
     (exists (select 1 
       from votes v 
       where v.post_id = p.id and v.user_id = $uid 
       ) 
     ) as user_flag 
from p; 

type_voteにいくつかの条件があるかもしれませんが、あなたの質問には、そのフィールドが使用されている方法を説明していません:

は、私は、これはあなたが望むかもしれないと思います。

+0

こんにちは、お返事ありがとうございます。はい、私は忘れましたが、私の投票テーブルの株式は好きで嫌いなので、私も条件が必要ですが、もし私が物事を得るなら、私はそれを自分でやるでしょう。 あなたのコードをありがとう、私は私の要求を構築する方法を知っていると思うが、1つのこと、私は私のjsonの応答で値を取得することはできません user_flagの値は常に "0" – Efbi

+0

@エフビです。 。 。それは、与えられたユーザーが常に(何らかの方法で)各投稿に投票したことを示唆します。 –

+0

うん、私は投票しようとしましたが、それは大丈夫ですが、SQLクエリーを行うと大丈夫ですが、jsonレスポンスは値を表示しません!私は私のポストを編集しました – Efbi

0

場合は、条件を使用することもできます:あなたが列を追加するか、またはあなたの表現で言ってい置き換える

IF(liked IS NULL,0,1) 

関連する問題