1

私はデータベースにまったく慣れていないので、これがばかげているように聞こえる場合は、事前に謝罪します。マイクロブログのWebサイトをシミュレートする基本的なWebアプリケーションを作成しています。私は3つのテーブルauthorsposts&を持っていcommentsます。

表のauthors説明は次のとおりです。

aId int(20) NO  PRI NULL    auto_increment
aUser   varchar(30) NO  UNI NULL    
aPass   varchar(40) NO      NULL    
aEmail  varchar(30) NO  UNI NULL    
aBio    mediumtext  YES     NULL    
aReg    datetime    NO      NULL    

表について以下にposts説明します。

pId int(20) NO  PRI NULL    auto_increment
pAuthor int(20) NO  MUL NULL    
pTitle  tinytext    NO      NULL    
pBody   mediumtext  NO      NULL    
pDate   datetime    NO      NULL    

人間関係の基本は理解していますが、自分のWebアプリケーションで投稿を表示し、誰が投稿したかを含めたい場合は、結果セットに数値ではなく実際のユーザー名が表示されるようにする方法はありますか? ID?投稿が作成されるたびにユーザーIDを取得するため、作成されたすべての投稿は有効なユーザーIDによって作成され、投稿テーブルには作成者のユーザーIDが記録されますが、選択クエリで投稿を表示すると、番号が表示されます著者テーブルでそれらに関連付けられている名前ではありません。これを行うために使用できるクエリ、または作成者からのselect *を使用する場合は、ユーザーIDではなくユーザー名が表示されます。君たちありがとう。

4

1 に答える 1

1

SQLクエリを探していると思います:

SELECT pTitle, pDate, aUser 
FROM posts
LEFT JOIN authors ON aId=pAuthor
ORDER BY pDate DESC

SELECT表示したい列をMySQLに伝えた後、LEFT JOINテーブルを一緒に接続し(aIdと でpAuthor)、ORDER BY新しいものから始まる日付順に並べてそれらを与えるようにmysqlに伝えますpDate DESC(最高日が最初)

SELECT posts.*, authors.aUser 
FROM posts 
LEFT JOIN authors ON aId=pAuthor
WHERE pTitle LIKE "%news%"
ORDER BY pDate DESC, aUser ASC

最新の投稿からソートされた「ニュース」を含むタイトルの投稿を検索するときに作成者の名前を表示し、同じタイムスタンプを持つ 2 つの投稿の場合は、ユーザー名で並べ替えて表示します (Adam は Zachariash の前に表示されます)。

タイトル、日付、ユーザー名以外を表示する必要がない場合は、上記の最初のクエリの 1 行目を使用します。

于 2013-03-17T23:06:28.447 に答える