与查询系统相关的SQL查询(PHP)

时间:2014-07-26 10:17:37

标签: php mysql sql

我不明白这个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;

1 个答案:

答案 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