2016-09-30 23 views
1

私は数時間を費やしても、それを正しく実行できませんでした。私はユーザーテーブルと投稿テーブルを持っています。ユーザーからの投稿を選択してください。

Userテーブル

username | followers  | following 

john  | mary,steven,joel | anthony,matthew 

記事テーブル

fromuser | post     | date 

mary  | Bla bla, today is cold. | 1475982647 

私は守られているユーザーからの投稿を取得する必要があります。これを試しました。

SELECT * FROM posts WHERE $member[nick] 
IN (SELECT followers FROM users WHERE $member[nick] IN followers ORDER BY id DESC limit 10 

これはすべての投稿を返しません。それを行う正しい方法は何ですか?

+3

データをカンマで区切ってはいけません。 –

+0

@FastSnail、それはフォロワーとそれに続く行です。カンマは使用できないので、一度使用しました。何か問題はありますか? –

+2

@canertaşdemirはい[区切られたリストをデータベース列に格納するのは本当に悪いですか?](http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database-column-本当に悪いです) –

答えて

1
SELECT * 
FROM posts 
WHERE FIND_IN_SET(fromuser, 
        (SELECT following FROM users WHERE username = 'john')) > 0 

このクエリは、彼が与えられたユーザ(この場合ジョン)続いているか否かをpostsに登場する各ユーザを確認するFIND_IN_SETを使用します。

+0

@canertaşdemir空の文字列または「NULL」とみなされるロジックを、そのユーザーのフォロワーがないという意味で更新しました。 –

+0

質問には、現在のユーザーはどこに含める必要がありますか? $ member [nick] –

+0

@canertaşdemir 'WHERE'節にチェックを追加するだけです。 –

関連する問題