さて、私は自分のウェブサイトにニュースフィードを持ちたいと思っています。私は、ユーザー、フォロー、および投稿という3つのテーブルがあります。基本ユーザーデータは、フォローテーブルに格納されているフォローしているユーザーテーブルと、ユーザーの投稿が投稿に書き込まれたユーザーテーブルに移動します。今、私はデータベーステーブルからすべての投稿を選択し、WHERE句を使用してそれを制限する方法を知っています。しかし、どのようにして私のクエリを書いて、彼らが従っているユーザーだけからすべての投稿をすべて選択し、それをDESC日付で表示するのですか?ありがとう。ここでSQLクエリで配列を使用する
答えて
はあなたが言及した3つの表のように作り、あなたのための一般的なレイアウトですが、私は単なる一例として
[TABLES]
- ユーザー
- フォロワー
- の記事の下に概説されてきました
usersテーブルには、少なくともuserid(自動インクリメント値/主キー)。
フォロワーテーブルには、ユーザーテーブルuseridと一致するuseridのようなものが必要です。ユーザーIDは、ユーザーテーブルのフォロワーのID#も持つフォローアップ列です。
あなたの投稿テーブルでは、各投稿が作成されたときにuseridのIDを持たせたいと思うでしょう。あなたがこれを理解するために、ユーザーIDを取得している方法についての
SELECT p.*
FROM posts AS p
WHERE p.userid IN (SELECT followid FROM followers WHERE userid = ###)
ORDER BY p.date DESC
が今では本当に依存します
次に、あなたのような何かをする必要があります。あなたがFacebookのようなものに似たログイン後にセッションを使ってユーザーidを渡すと、userid = ###をuserid = "。$ _ SESSION ['userid']のように変更することができます。しかし、もう一度それは本当にあなたがどのようにユーザーIDを渡すかに依存しますが、少なくとも上記はあなたをいくらか起動させるべきです。
テーブルが大きくなるとすぐに結合が行われるように、ユーザーID、followid列にインデックスを配置してください。
シェーンの答え@に代わるものは、結合演算子を使用することです:inputedユーザーID($ selectedUserID)については
'SELECT p.* // I prefer to name all the fields, but for brevity's sake I'll use the shorthand
FROM Posts AS p
INNER JOIN Follow AS f ON p.userid = f.followid
WHERE f.userid = '.$selectedUserID.'
ORDER BY p.date DESC;'
を、それがために従うのIDに一致する(彼らは従う人々のすべてのユーザーIDを検索しますFollow x-refテーブルのユーザーID)、Postテーブルからそれぞれの投稿を日付順に検索します。誰にも従わないと空になるか、従う人には投稿がありません。
また、データベースへの入力をサニタイズし、出力をWebにエスケープするように伝える必要はありません。
これはあなたが探しているものですか?
- 1. 配列を使用したSQLクエリ
- 2. PHPで配列をSQLクエリとして使用する方法
- 3. Laravel 5.2のSQLクエリでPHP配列を使用
- 4. SQLクエリ更新列配列
- 5. SQL ServerクエリJSON配列
- 6. foreachループ配列のSQLクエリ
- 7. SQLクエリのJavaScript配列?
- 8. PHP配列からSQLクエリ
- 9. TypeScriptで配列を返すmongooseクエリで `lean`を使用する
- 10. PHPを使用して新しい配列にSQLクエリ行を追加する
- 11. SQLクエリを分割した配列を配列に返す
- 12. MySQLクエリで数値配列定数配列を使用するには?
- 13. SQLクエリで列名に変数を使用する
- 14. SQLクエリの文字列への配列
- 15. クエリを使用した配列オブジェクト
- 16. SQLクエリでNOT EXISTSを使用する
- 17. SQLクエリでelseを使用する
- 18. sqlクエリでcharindexを使用する
- 19. IFをSQLクエリで使用する
- 20. SQLクエリでSUMを使用する
- 21. 配列を配列に分割し、配列の各項目をクエリ文字列で使用する
- 22. PHPのmysqlクエリで配列を使用する方法?
- 23. クエリ配列を使用したlodashフィルタ配列
- 24. SQLクエリの配列情報を表示
- 25. カスタム関数の配列パラメータ(入力)としてSQLクエリを使用します。
- 26. SQLクエリに文字列配列を追加する
- 27. 動的SQLクエリで配列リストを処理する方法
- 28. 文字列配列のSolrクエリでdfを使用
- 29. Symfony 2.5:配列をパラメータとしてWhere句を使用したSQLクエリ
- 30. SQLクエリ:ランク列値の中でタイムスタンプ列を使用する方法
この種の質問に対してスキーマを示す方がよいでしょう。また、どんなクエリを試しましたか?あなたは望みの結果に近づきましたか? –
あなたが試したことは、あなたのために良い答えをピン止めするのに役立つかもしれません –