有两个表:
表class:
    有字段id,pid,name
表book:
    有字段id,classid,booknameclass表里的id就是book表里的classid
pid是id的父id
我现在想查询pid为3的所有book记录   ~~~
可不可以用一个SQL语句解决的??~~~
求教

解决方案 »

  1.   


    select * from `class` as a,book as b where a.id = b.classid and a.pid=3;
      

  2.   

    select book.* from `class,book where class.id = book.classid and class.pid=3;
      

  3.   

    select book.* from class,book where class.id=book.classid and class.pid=3;
    1,2楼的都可以啦,二楼的比较符合要求,只有book数据读出。
      

  4.   

    谢谢大家~~~我明白了
    还有个问题就是如果我想根据PID的PID的值来查询BOOK的记录~~这样的话可不可以写成一句的~~
    我只要这样的两层就可以了^_^
      

  5.   

    select   book.*   from   class,book   where   class.id=book.classid   and   class.pid is (select a.Id from class a,class b where a.pId=b.Id and b.Id='你说的那个pid的pid');
    应该是这样了,太长了,怕写错.
      

  6.   

    而且mysql版本要高才支持子查询,具体是多少版我不记得了,5.0肯定可以
      

  7.   

    这样写最好
         SELECT b.* from book b INNER JOIN class c ON c.id=b.classid AND c.pid=3楼主以后注意少用像这样的形式 (SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id)
    最好用 LEFT JOIN 或 INNER JOIN
    明白了吗
      

  8.   

    INNER JOIN 和我写的性能差不多.再好多情况下不见得用LEFT JOIN或者 INNER JOIN就比普通连接效率高.
    具体问题要具体对待.