基本的なSQL文を超えるものは何でもあり、私の強みはありません。PHPで内部結合を使用したメッセージへの返信件数を表示
私は、別のメッセージの代わりに1つのメインメッセージに返信し、参加しているすべてのメッセージが1つの場所に表示される、Facebookのようなものです。
メールテーブル:
- MAILID
- MAILUSER:メッセージを送信した人
- のmailto
- mailUnread:1 mailSubject 未読
- ある
- mailBody
- mailCurrency
- mailTime
- mailDeleted:
- mailreplyID
- mailreplyUser:
- mailreplyDeletedを返信いるユーザー:1が
- mailreplyToを削除された1がmailreplyテーブルの
関連フィールドを削除されます:返信するメッセージのID:
オリジナルそれはそれが応答の数を数えずにうまくいったように私はそれをコード化しましたが、私はそれを含めることが有用であると決めました。
これは私がもともと持っていたものです:
SELECT
a.mailID,
a.mailUser,
a.mailTo,
b.username AS usernamea,
c.username AS usernameb
FROM
mail a, users b, users c
WHERE
(a.mailUser = b.id OR a.mailUser = c.id)
AND (a.mailTo = '".$id."' OR a.mailUser = '".$id."')
AND a.mailDeleted = '0'
GROUP BY a.mailID
ORDER BY a.mailID DESC
これは私の試みであった:あなたがに参加する必要があり
SELECT
a.mailID,
a.mailUser,
a.mailTo,
b.username AS fromUsername,
c.username AS toUsername,
count(d.mailReplyID) as mailCount
FROM
mail a
INNER JOIN users b ON b.id=a.mailUserId
INNER JOIN users c ON c.id=a.mailTo
LEFT JOIN mailreply d
ON d.mailreplyTo = a.mailID
WHERE
(a.mailTo = '".$id."' OR a.mailUser = '".$id."')
AND a.mailDeleted = '0'
GROUP BY a.mailID
ORDER BY a.mailID DESC
:
SELECT
a.mailID,
a.mailUser,
a.mailTo,
b.username AS usernamea,
c.username AS usernameb
FROM
mail a, users b, users c
LEFT JOIN mailreply d
ON d.mailreplyTo = a.mailID
WHERE
(a.mailUser = b.id OR a.mailUser = c.id)
AND (a.mailTo = '".$id."' OR a.mailUser = '".$id."')
AND a.mailDeleted = '0'
GROUP BY a.mailID
ORDER BY a.mailID DESC
おかげ
こんにちはRebecca、Stack Oveflowへようこそ!あなたの2回目の試みはうまくいったのですかエラーや予期しない結果がありましたか? –
悲しいことに、私は "提供された引数が有効なMySQLの結果リソースではありません"というエラーを受け取ります。私は問題が何であるか分かりませんし、運がないまま物事を変えようとしています。 –
私はあなたの質問から、この問題を解決するために重要だったように見えなかった列を削除する自由を取った、あなたが気にしないことを願っています。これを考え出した。また、あなたが言ったエラーは、PHPエラーのように聞こえる...あなたはMySQL自体から何かエラーを取得しましたか? –