SELECT cust_name,
       cust_state,
       (SELECT COUNT(*)
        FROM orders
        WHERE oders.cust_id = customers.cust_id) AS orders
FROM customers
ORDER BY cust_name;
       上面得SOL会返回customers表中的每个行,和他们在order表中出现的次数。
书上说:子查询总是从内向外处理。
但是        SELECT COUNT(*)
        FROM orders,customers
        WHERE oders.cust_id = customers.cust_id) 
       
只会返回一行就是表中的行数!怀疑从内向外执行!求解!

解决方案 »

  1.   

           (SELECT COUNT(*)
            FROM orders
            WHERE oders.cust_id = customers.cust_id) AS orders并不等同于        SELECT COUNT(*)
            FROM orders,customers
            WHERE oders.cust_id = customers.cust_id) 什么书上讲的?上下文是什么?你是如何理解的?
      

  2.   

    《MySql必知必会》
    入门级的书,讲子查询的!
      

  3.   

    建议看正规学校教材。 由于你不肯贴出这句话的上下文,所以无法说书中讲的对与不对。 同样你也不愿意写出你自己的理解,所以也无法对你的理解进行评论。先读三遍《数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社 (掌握基础知识和概念) 然后再粗略浏览一遍MYSQL的官方手册。(方便以后查找,避免类似于考试的时候,给你本政治书也不知道答案在第几章,第几页)MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  4.   

    我认为是从外层的查询  得到customer.cust_id 在内层的查询用!
      

  5.   

    这个子查询的目的是显示customers表中每个客户的订单总数,订单在orders表中。
      

  6.   


    ACMAIN仁兄 你回复的太快了!
      

  7.   

    灰常讨厌讨厌中国的大学教材!可读性太差,这本书作者是Ben Forta 很友好,通俗易懂!
    既然ACMAIN_CHM老大推荐,去书店的时候看看!找一本好教材是一项hardwork!