1
嗨,我正在学习MySQL
加入。从教程我有两个表。这个加入声明如何工作以产生此结果
查询是
<?php
// Make a MySQL Connection
// Construct our join query
$query = "SELECT family.Position, food.Meal ".
"FROM family, food ".
"WHERE family.Position = food.Position";
$result = mysql_query($query) or die(mysql_error());
// Print out the contents of each row into a table
while($row = mysql_fetch_array($result)){
echo $row['Position']. " - ". $row['Meal'];
echo "<br />";
}
?>
,其结果是
*我的问题是,这是什么选择逻辑。 *如果您通过获取family
表中的位置和搜索它在食台上开始了,我想结果应该是
Dad|steak
Dad|Tacos
Mom|Salad
但结果是不同的。搜索的工作原理和结果集是如何组织的。请帮我理解它是如何工作的,谢谢你提前...............
使用'INNER JOIN'获得所需的输出 – diEcho 2012-07-09 12:33:15
@diEcho,是的,我知道如何使用inner,left和right join。但事情是,我想知道如何在内部处理结果集。食物表的位置值与家庭表位置值中的每个位置值进行比较,反之亦然。 – 2012-07-09 12:42:22
Sql是声明性语言 - 你说你想要什么,它会尝试执行最有效的查询。在这个例子中,优化器把'1:n'关系中的'n'表作为主要来源。请记住,Sql不保证行的顺序。你需要明确地命令它们。 – 2012-07-09 12:42:47