0


0

私は自分自身を理解することができないという問題を抱えています。 私はLEFT JOINなどを使ってみましたが、うまくいかないようです。 私はMySQLを使っていますのでご存知のとおりです。

私は私のために小さなブログポータルを構築しています、そして私の友人とすべてのユーザーは自分のブログを持っています。

データベース:

  • users:* id、username、passwordなど

ブログ: id、title、text、user_idなど

リレーション follower_id、following_id

私はこのように自分のブログ投稿をクエリします。

SELECT * FROMマイクロブログWHERE user_id = {$ user_id}注文投稿投稿DESC

私は私の友人をこのようにリストします:

SELECT * FROMユーザー、関係WHERE relations.follower_id = {$ user_id} AND relations.following_id = users.id

それは簡単な部分でした。 しかし。

私のループ内に友達のブログポストもリストしたいので、どうにかしてテーブルに参加します。 しかし、私は投稿を見せるだけではなく、その投稿を投稿したユーザーに関する情報も欲しいので、usersテーブルからも情報を入手しなければなりません。 そしてそれが私を悩ますものです! わかりません。

手短に言うと、私は自分のブログ投稿と、自分のループ内で友達となっているすべてのユーザーをリストしたいのです。 また、投稿の横にユーザー名とメールアドレスを表示したいと思います。

私の言っていることを理解してください。

/トビアス

スウェーデン

3 Answer


0


これを試して?

SELECT m。*マイクロブログからm内部ユーザーの参加者m.user_id = u.user_idの関係を左に表示r.following_id = m.user_idの場所WHERE m.user_id = {$ user_id} OR(r.follower_id = {$ user_id} AND NOT IsNull(r.follower_id)ORDER BY投稿されたDESC


0


どうですか?

u.username、u.email、m.title、m.textを選択します -  ... m.user_id = {$ user_id}またはm.user_id inのマイクロブログm内部結合ユーザーuからのetc(follower_id = {$ user_id}からfollow_idを選択)。


0


私の考えでは、ユーザーデータを別々に取り出し、それらを配列に格納して、必要に応じてアクセスします。 これはパフォーマンスの点では優れているはずであり、間違いなく単純になるでしょう。

ブログbから*を選択し、投稿された順に並べ替えます。

私がフォロワー/フォローを逆にしたかどうかわからない。