我知道这个主题已经在这里和互联网上创建了很多线程。但我真的无法理解这两个语句之间的区别!我的意思是,尝试并尝试,我可以使用我的查询达到所有需要的结果,但我真的没完全掌握它!
我认为自己是一个非常好的程序员和SQL专家,我对此感到有点羞愧...
以下是一个例子:
- 我有一个包含网站页面 ("web_page") 的表 - 一个包含类别 ("category") 的表。 - 一个类别可以包含一个或多个页面,但反之则不然。 - 一个类别可能根本没有页面。 - 页面可以在网站上可见或不可见。
因此,如果我想显示所有类别及其页面,我的意思是既包括有页面也包括没有页面的类别,我必须做以下操作:
我将仅选择至少有一个网页的类别... 但为什么?
这只是一个例子... 我想要永久理解这个区别!
谢谢。
我认为自己是一个非常好的程序员和SQL专家,我对此感到有点羞愧...
以下是一个例子:
- 我有一个包含网站页面 ("web_page") 的表 - 一个包含类别 ("category") 的表。 - 一个类别可以包含一个或多个页面,但反之则不然。 - 一个类别可能根本没有页面。 - 页面可以在网站上可见或不可见。
因此,如果我想显示所有类别及其页面,我的意思是既包括有页面也包括没有页面的类别,我必须做以下操作:
FROM category
LEFT JOIN web_page ON ( web_page.category_id = category.category_id AND web_page.active = "Y" )
如果一个分类没有页面,那么该类别的记录中会出现web_page_id为空的情况。
但是如果我执行以下操作:
FROM category
LEFT JOIN web_page ON ( web_page.category_id = category.category_id )
...
WHERE web_page.active = "Y"...
我将仅选择至少有一个网页的类别... 但为什么?
这只是一个例子... 我想要永久理解这个区别!
谢谢。