0

私は自分の部署用に小さなソーシャル ネットワークを構築しています。

コメントを投稿したり、友達がコメントしたりできる場所としてホームページがあります。

私は4つのテーブルを持っています...allposts_tb、friendship_tb、response_tb、signup_tb..

allposts_tbは、人々によって行われた更新と投稿を収集します。次の列があります( all_id(PK)namecommenttime)

列 ( 、、、)としての友情_tbfriend_id(Pk)mynamenewfriendstatus

列としてのresponse_tbid(Pk) ( 、nameresponseall_id(Fk)time)

列としてのsignup_tb ( signup_idlastnamefirstnameemailpasswordcountry)profilepicture

以下のSQLクエリを使用して、人々が作成したコメントを簡単に表示できます

 SELECT allposts_tb.all_id,allposts_tb.name,allposts_tb.comment, allposts_tb.time,
friendship_tb.myname,friendship_tb.newfriend,signup_tb.firstname,
signup_tb.lastname,signup_tb.email,signup_tb.profilepicture,
allposts_tb.expand   
FROM allposts_tb,friendship_tb,signup_tb
WHERE allposts_tb.name = friendship_tb.newfriend
 and friendship_tb.myname=colname and
 allposts_tb.name=signup_tb.email
ORDER BY allposts_tb.all_id DESC
and colname=$_SESSION['MM_Username']

コメントのすぐ下にある特定のコメントに対して人々が行った応答を表示する際に問題が発生しています...Facebookのページを複製するのと同じように.すぐに何かを言うと、コメントのすぐ下に表示されるはずです.クエリ。私があなたたちに与えたクエリの中で..たくさんのウェブページを読んだが、うまくいかない...助けてください...

4

1 に答える 1

1

allposts_tbテーブルの代わりにresponse_tbを使用することを除いて、最初のクエリと同様の2番目のクエリを作成できます。次に、結果を組み合わせて、2つのクエリの間にUNIONALLステートメントを配置します。最後に、ORDER BY句を配置し、all_id、次にtimeで並べ替えることができます。

response_tbからのクエリで、「comment」フィールドを「response」に置き換えるだけです。

SQLはおそらく次のようになります。

SELECT allposts_tb.all_id,allposts_tb.name,allposts_tb.comment, allposts_tb.time,
friendship_tb.myname,friendship_tb.newfriend,signup_tb.firstname,
signup_tb.lastname,signup_tb.email,signup_tb.profilepicture,
allposts_tb.expand   
FROM allposts_tb,friendship_tb,signup_tb
WHERE allposts_tb.name = friendship_tb.newfriend
 and friendship_tb.myname=colname and
 allposts_tb.name=signup_tb.email
and colname=$_SESSION['MM_Username']

UNION ALL

SELECT response_tb.all_id,response_tb.name,response_tb.response, response_tb.time,
friendship_tb.myname,friendship_tb.newfriend,signup_tb.firstname,
signup_tb.lastname,signup_tb.email,signup_tb.profilepicture,
response_tb.expand   
FROM response_tb,friendship_tb,signup_tb
WHERE response_tb.name = friendship_tb.newfriend
 and friendship_tb.myname=colname and
 response_tb.name=signup_tb.email
and colname=$_SESSION['MM_Username']
ORDER BY all_id DESC, time desc
于 2012-09-28T19:24:42.593 に答える