注册 登录
编程论坛 PHP技术论坛

php mysql高手请进,帮助解释下面语句的含义,月详细越好

gaoheran 发布于 2005-01-15 15:40, 2093 次点击

SELECT m.username as gy_user, m.password as gy_pw, m.styleid, m.newpm, u.*, u.specifiedusers LIKE '%\t$username\t%' AS specifieduser FROM $table_members m LEFT JOIN $table_usergroups u ON u.specifiedusers LIKE '%\t$username\t%' OR (u.status=m.status AND ((u.creditshigher='0' AND u.creditslower='0' AND u.specifiedusers='') OR (m.credit>=u.creditshigher AND m.credit<u.creditslower)))

WHERE username='$username' AND password='$password' ORDER BY specifieduser DESC

2 回复
#2
renyuan0002008-08-15 11:55
Re
多表连接查询,模糊查询,并且排序
#3
ming2062008-08-18 16:59
以下给你加了详细注解,不过你必须有SQL基本,如果连基本都没有你就先看基本知识了.


SELECT
    /*表m中的字段(就是$table_members表,这个$table_members是个参数)*/
    m.username as gy_user,
    m.password as gy_pw,
    m.styleid, m.newpm,
    /*表u的所有字段($table_usergroups 表,$table_usergroups 也是个参数进来的)*/
    u.*,
    u.specifiedusers LIKE '%\t$username\t%' AS specifieduser
    /*以m为主表进行查询*/
    FROM $table_members m
    /*左外连接(另外还有:
      左外连接 Left  outer Join=Left  join
      右外连接 right outer join=right join
      内连接   inner join   
            )
    */
    LEFT JOIN $table_usergroups u
    /*不管是Left  join,right join ,inner join  都必须带的 on条件,这些条件我就没必要解释了 */
    ON u.specifiedusers LIKE '%\t$username\t%'
       OR (
           u.status=m.status AND ((u.creditshigher='0' AND u.creditslower='0' AND u.specifiedusers='')
       OR (m.credit>=u.creditshigher AND m.credit<u.creditslower))
          )
/*WHERE 条件我也没必要解释了*/
WHERE username='$username'
AND password='$password'
ORDER BY specifieduser DESC
1