私はconversation
テーブルを持っています。このテーブルには、外部キーとして2つのユーザーIDと、ユーザーの詳細を含むユーザーテーブルが含まれています。 conversation
テーブルをユーザーテーブルに結合して返しますが、IDがパラメータとして送信されていないユーザーの名前と姓を表示するクエリを作成したいとします。例えば条件付きSQL JOIN
CREATE TABLE `conversation` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_one_id` int(11) NOT NULL,
`user_two_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`surname` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
私が持っている
会話:
id user_one_id user_two_id
1 1 2
ユーザー:
id name surname
1 userone_name userone_surname
2 usertwo_name usertwo_surname
は私がuser_twoの名前と姓を返しますクエリをしたいですユーザーではなく、参加する 1。 私の現在のクエリ:
SELECT c.id, c.user_one_id, c.user_two_id, u.name, u.surname * FROM conversation c
JOIN user u
WHERE c.user_one_id = 1
OR c.user_two_id = 1
AND IF (c.user_one_id = u.id, c.user_two_id = u.id, c.user_one_id = u.id)
GROUP BY c.id
ORDER BY c.date DESC;
一般GROUPがない会話をユーザーに与えますrule:GROUP BY句が指定されている場合、SELECTリスト内の各列参照は、グループ化列を識別するか、または集合関数の引数でなければなりません! – jarlh