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