MySQL加入解释

时间:2011-05-18 19:32:40

标签: php mysql join

  

可能重复:
  SQL Join Differences

$PERSON = $DATABASE_LINK->query("SELECT * FROM `users`,`profiles` WHERE users.first_name = 'shane' && users.last_name = 'larson' && users.setup = '1' && profiles.zipcode = '53511' ORDER BY `full_name` ASC");

$PERSON = $PERSON->fetch_object();

var_dump($PERSON);

我想要一个基于名称扫描用户记录的查询,并检查配置文件表中的邮政编码。以上就是一个例子。它有效,但idk如何加入工作完全。关于联接如何匹配2行的任何解释都很棒:)

3 个答案:

答案 0 :(得分:0)

您收到的结果集是用户表中与用户条件匹配的所有行的交叉积,以及配置文件表中与配置文件条件匹配的所有行。

这似乎不是你想要的。

考虑添加类似users.blammy = profiles.blammy的内容来加入这两个表。

答案 1 :(得分:0)

SELECT Cities.Name, Countries.Name, Countries.id
                    FROM Cities INNER JOIN Countries
                    ON Cities.CountryId = Countries.id
                    WHERE Cities.Name LIKE = 'town' LIMIT 10

看一下这个例子:

第一行从两个不同的表(城市和国家)中选择三列。

第二行指定要连接的两个表。

第三行指定与两个表匹配的项目。

  

该查询的结果是一个列表   与LIKE匹配的Cities.Name   条款及其相应的   Countries.Name(由它找到的   匹配Cities.CountryId with   Countries.id)。

在此处阅读更多内容:http://www.wellho.net/mouth/158_MySQL-LEFT-JOIN-and-RIGHT-JOIN-INNER-JOIN-and-OUTER-JOIN.html

答案 2 :(得分:0)

因此,使用带有“WHERE table1.id_x = table2.id_y”的SQL语句可以正常工作,但据我所知,它们比Joins慢(主要是使用大型数据集)。

所以有内外连接,外连接分为左连接和右连接。

左边的一个小解释 - 加入:

SELECT Class.Id, Class.Name, Professor.Id, Professor.Name
FROM FROM Professor INNER JOIN Class
ON Professor.Id = Class.ProfessorId;

本声明选择所有教授,并不关心教授是否不教授课程。但如果没有教授的课程,则不选择此课程。它被称为左连接,因为左表中的'NULL'引用被忽略。右连接的解释应该是微不足道的;)

SELECT Class.Id, Class.Name, Professor.Id, Professor.Name
FROM FROM Professor LEFT OUTER JOIN Class
ON Professor.Id = Class.ProfessorId;

内部联接不会显示没有类的教授,也不会显示没有教授的课程。

请记住:并非所有DBMS都获得了关键字'INNER'和'OUTER';)