我不明白这个SQL查询是如何工作的。有谁可以向我解释一下?谢谢!!
$req1 = mysql_query('
SELECT
m1.id,
m1.title,
m1.timestamp,
count(m2.id) as reps,
users.id as userid,
users.username
FROM
pm as m1, pm as m2, users
WHERE ((m1.user1="'.$_SESSION['userid'].'" and m1.user1read="no" and users.id=m1.user2)
or (m1.user2="'.$_SESSION['userid'].'" and m1.user2read="no" and users.id=m1.user1))
and m1.id2="1" and m2.id=m1.id
GROUP BY m1.id
ORDER BY m1.id desc
');
我使用了两张表。
CREATE TABLE `users` (
`id` bigint(20) NOT NULL,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`avatar` text NOT NULL,
`signup_date` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `pm` (
`id` bigint(20) NOT NULL,
`id2` int(11) NOT NULL,
`title` varchar(256) NOT NULL,
`user1` bigint(20) NOT NULL,
`user2` bigint(20) NOT NULL,
`message` text NOT NULL,
`timestamp` int(10) NOT NULL,
`user1read` varchar(3) NOT NULL,
`user2read` varchar(3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
答案 0 :(得分:0)
如果我们这样写出来会有帮助吗??
SELECT m1.id
, m1.title
, m1.timestamp
, COUNT(m2.id) reps
, u.id userid
, u.username
FROM pm m1
JOIN pm m2
ON m2.id = m1.id
JOIN users u
ON u.id = m1.user1
WHERE (
(m1.user1 = $_SESSION['userid'] AND m1.user1read = 'no')
OR (m1.user2 = $_SESSION['userid'] AND m1.user2read = 'no')
)
AND m1.id2 = 1
GROUP BY m1.id
ORDER BY m1.id DESC