2017-01-12 7 views
-2

私はユーザ、投稿、友人のデータベースを作成し、account_nameが$ u = "logged in user"でaccount_nameが "の投稿からすべての投稿をプルしたいログインしたユーザーのリスト "mysqliテーブルからデータを取得するクエリ

どのように私はsthのようなプルにクエリを追加できますか?クエリ怒鳴るを確認してください:INを使用して、あなたのWHERE文でサブクエリを選択することですこれを達成する

​$sql = "SELECT p.*, u.avater FROM posts AS p 
    LEFT JOIN users AS u ON u.username = p.author 
    WHERE (p.account_name='$u') OR (p.account_name = '(if exist in logged_user friends list') 
    ORDER BY p.postdate DESC LIMIT 20"; 
+0

友人はどのように定義されていますか? – Progrock

答えて

0

一つの方法を、下記を参照してください。

私はlogged_userであなたのテーブル構造のわからないんだけど、単純に(下の例では、id)1列を選択し、WHERE文で$uユーザーを使用します。

「$ u」をクエリに直接含めることはお勧めできません。また、準備済みの文を使用する必要があります。

SELECT p.*, u.avater 
FROM posts AS p 
LEFT JOIN users AS u ON u.username = p.author 
WHERE p.account_name = '$u' 
OR p.account_name IN (SELECT user2 FROM friends WHERE user1 = '$u') 
ORDER BY p.postdate DESC LIMIT 20 
+0

ありがとうございましたが、それは動作しませんでした – Benjamin

+0

logged_usersテーブルの構造は何ですか? –

+0

ありがとう、しかしそれは仕事をしなかった、plsは再びqusをチェックします 私はフィールド(id、user1、user2、受け入れ)の友達テーブルを持っています 私はp.account_nameがログインしている投稿テーブルから投稿を選択したいuser u)ORは$ uの友人リストにあります ($ u friendsを選択するクエリは、user1 = "$ u"またはSELECT user1 = "$ u"の友人からSELECT user2になります... plsは$を使用します私は仕事を得ることができる場合、代わりにPrepareステートメントを使用することができます ありがとう – Benjamin

関連する問題