2017-07-06 18 views
0

この問題に関する私のソリューションは2つのクエリを使用することですが、1つのクエリでのみ実行できるかどうかは疑問です。私は最初user_idがどこにあるのdoc_idを取得することです欲しい2つのクエリを組み合わせてHAVINGを使用する

saved_docs

id | user_id | doc_id | date 
----------------------------------------------- 
    1 | 2   | 1  | date  
    2 | 3   | 2  | date  
    3 | 2   | 3  | date 

docs_list

id | url | title | date 
----------------------------------------- 
    1 | url | title | date  
    2 | url | title | date  
    3 | url | title | date 

は、私はこれらのようなテーブルを持っています等しいuser's idにその後、docs_listidは私がsaved_docssaved_docsdateによってために取得doc_id/sに等しい場合にドキュメントを取得します。

これは2つのクエリで実行できますが、1つしか実行できない可能性がある場合は、そのクエリを実行します。

SELECT docs_list.url, docs_list.title 

FROM docs_list 

INNER JOIN saved_docs 

ON saved_posts.user_id = {$user_id} 

ORDER BY saved_docs.date DESC 

注:ここでは

は私の現在のmysqlのクエリである私はおよそHAVINGを読んで、問題は、私はこのクエリにそれを適用する方法がわからないです。

現在の問題:

それは私にそれが正しいdoc_id /秒(自動化)を与えるものではありませんので、明白であるすべてのドキュメントを与えています。これを私のやり方にするためには何をする必要がありますか?

[SOLVED]

注:etsa年代とアダムの答えは私の問題を解決したの両方。

+4

タイトルであなたの考えを試してください。それは質問に向かって人を助けるのに役立ちます。 – tadman

答えて

2

あなたはこれを試すことができます:あなたが逆の順序でそれをやりたいように

SELECT docs_list.url, docs_list.title 
FROM docs_list 
INNER JOIN saved_docs ON docs_list.id = saved_docs.doc_id 
WHERE saved_posts.user_id = {$user_id} 
ORDER BY saved_docs.date DESC 
+0

ありがとう!それは問題を解決しましたが、私は 'saved_docs.id'を' saved_docs.doc_id'に変更しました。私のような問題を抱えている人は誰でも変えてください。 –

+1

タイプエラーです。更新しました。 – etsa

+0

こんにちは、質問がありますが、このクエリではどのインデックス/インデックスを作成する必要がありますか?私は現在、** saved_docs **の 'user_id'と' date'のインデックスを持っています。上記のインデックスを使用するmysqlと** idの** docs_list **の**プライマリインデックス**。それで十分ですか?または私はもっと追加する必要がありますか? –

2

が鳴ります。

まず、ユーザー{$user_id}に保存されているすべてのドキュメントを見つけて、それらのドキュメントに関する情報を取得してリストをソートします。

SELECT docs_list.url, docs_list.title 
FROM saved_docs 
LEFT JOIN docs_list 
ON docs_list.id = saved_docs.doc_id 
WHERE saved_docs.user_id = {$user_id} 
ORDER BY saved_docs.date DESC 
+0

ありがとう! +1、しかし残念ながら私は最初にそれに答えた人がいるのであなたの答えを受け入れることができません。 –

+2

それはどうなるのですか? –

+1

@AdamIngmanssonあなたは私のupvoteに値するでしょう... – etsa

関連する問題