0

fbニュースフィードのように実装したいのですが、次のことを行いましたが、その種のデータを取得するためのクエリはどうあるべきかわかりません

私はこれらのテーブルを持っています

TABLE:posts ユーザーのステータスを保存するために使用されるこのテーブルpost_idはAIであり、プライマリユーザー名はユーザー共有のユーザーIDです。公開されている場合はすべてのユーザーに共有可能であるか、ユーザーのリストと共有されている場合は、共有ファイルにそのリストのshare_idが含まれます。 。

+--------------+---------------+
| col_name     | col_type      |
+--------------|---------------+
| post_id      | INT(11)       |
+--------------|---------------+
| username     |  VARCHAR(50)  |
+--------------|---------------+
| share        |  VARCHAR(50)  |
+--------------|---------------+
| content      |  TEXT         |
+--------------|---------------+

TABLE:share このテーブルには、ユーザーshare_idのリストがAIであり、プライマリshare_nameが共有リストの名前です。

+--------------+---------------+
| col_name     | col_type      |
+--------------|---------------+
| share_id     | INT(11)       |
+--------------|---------------+
| username     |  VARCHAR(50)  |
+--------------|---------------+
| share_name   |  VARCHAR(50)  |
+--------------|---------------+

TABLE:share_membershareこのテーブルは、共有メンバーのリストを格納する 子テーブルです。

+--------------+---------------+
| col_name     | col_type      |
+--------------|---------------+
| smid         | INT(11)       |
+--------------|---------------+
| share_id     |  IMT(11)      |
+--------------|---------------+
| username     |  VARCHAR(50)  |
+--------------|---------------+

公開を含む、閲覧を許可したすべてのユーザーのデータを取得したい。

編集:

テーブルの投稿にもう1列追加しました

次に、このクエリを試しました

SELECT p.*, CASE p.share_type when 'public' then "1" when 'list' then if((select count(*) FROM share_member WHERE username='pratik' AND share_id=share)>="1") then "1" END AS allowed FROM posts p
4

0 に答える 0