2011-11-09 18 views
0

これは可能かどうかわかりませんが、ユーザーを検索して、すべての入力済みの文字の後に結果を表示したいので、その検索作業を可能ですが、私の知識のために私の野心的なものは高すぎます。条件が少ない複雑なmysql検索クエリ

私はLEFT JOINを2回使用することを含むusers db,relations (id, user_id, follower_id, status)を2番目に、最初はフォロワーとして、以下のようにしています。

私は何をしたいのですか?私は結果を順番に持っていきます。最初に、ユーザーがフォローしているユーザーをフォローしています。その他。そして私はすべての検索を最大10行に制限したい。それが何とかmysqlでしかできないのなら?私はすでにPHPでそれを行っていますが、それはデータベースへの多くのクエリへの道を含んでいます。

また、その行がどのcontidionかどうかを知る方法がある場合は面白いです。

UPDATE

私は何を取得し、どのような順番にする必要があります。以下の条件の下で

ユーザー:

  1. 検索クエリによって&ユーザーは、次のと、彼らが戻って、次の。
  2. &ユーザーが検索しました。
  3. &ユーザーにフォローしている人

    1. ユーザー以下と彼らが戻って、次の検索クエリ

    注文によって

  4. ユーザーがフォローしています。
  5. ユーザーにフォローしているユーザー。
  6. その他。

制限:0、10

私は単にその特定の方法で結果を注文することができます方法はありません信じて、私はサブクエリまたはより複雑なものを使用して考えるが、私のMySQLの知識があまりにもあります1つのクエリで可能であるかどうかわからない、または各条件の下で個別のクエリを使用するだけです。

+2

あなたの質問が理解できないで、あなたは結果としてたいです何より良い方法で説明しようと... – Marcx

+0

私欲しいのは、ユーザーテーブルの行です – Giedrius

答えて

0

私はそれをテストしていないが、私はそのような何かをしようとするだろう:

select distinct u.* from users u, relations r where u.id = r.user_id or u.id = r.follower_id order by u.id = r.user_id 
+0

私はすでにそれを行っていますが、この方法では私はiaの方法で私は行を並べることができません。私はまず、ユーザーがフォローしている人を取得し、十分な行がない場合は、ユーザーがフォローしているユーザーを取得し、ユーザーにフォローしているユーザーが不足していて、その検索クエリに適合するテーブルから検索します。 – Giedrius