2010-12-14 8 views
0

私を助けてください。3つのテーブルの複雑なクエリを書く方法は?

var $hasAndBelongsToMany = array(
    'Users' => array (
     'className' => 'User', 
     'join_table' => 'messages_users', 
     'foreignKey' => 'message_id', 
     'associationForeignKey' => 'reciever_id', 
     'conditions'=> array('MessagesUser.reciever_id => $this->Session->read("Id")') 
    ) 
); 

はだから今、私が取得するために、SQLクエリを作成したい、と私はので、私は、このためのメッセージモデルでHABTMの関係を使用しています

Users:id,name.... 

Message:id,title.... 

Messages_Users:id,message_id,sender_id,receiver_id...... 

、と3つのテーブルを持っていますログインした特定のユーザーにメッセージを送信したユーザーのすべての友人の名前。

私はユーザーがログインすると、彼はメッセージのリストを取得し、彼は送信者の名前をwidに沿って取得します。

messages_controllerでこれをどのように書き込むか?誰もが任意のアイデアを持っている場合

使用して、つまり

SELECT users.name, users.id, COUNT(*) 
FROM users, message_users 
WHERE users.id=message_users.sender_id 
AND message_users.receiver_id=$current_user_id 
GROUP BY users.name, users.id 
ORDER BY COUNT(*) DESC 

....私はORMはcackephpで動作しますが、あなたが必要とするクエリがあるかさっぱりだが...

答えて

0

を私に聞かせてくださいメッセージテーブルは不要で、コードの実行速度が大幅に遅くなります。

データベースが適切に正規化されていないことに注意してください。ユーザーが同じメッセージを複数の受信者(受信者ではない)に送信できる場合でも、複数のユーザーが同じメッセージを送信できるとは思いません。

関連する問題