1

こんにちは私はMySQL結合を学んでいます。チュートリアルから、2 つのテーブルを取得しました。

ここに画像の説明を入力

クエリは

<?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テーブルの位置を取得することから始めて、 food テーブルで検索した場合、結果は次のようになるはずです

Dad|steak
Dad|Tacos
Mom|Salad

しかし、結果は異なります。検索のしくみと結果セットの整理。これがどのように機能するかを理解するのを手伝ってください、事前に感謝します.......

4

1 に答える 1

0

このクエリを次のように書き直します。

SELECT
   family.Position, food.Meal
FROM
   family
   JOIN food USING (Position)

WHERE条件に句を使用できますJOIN。MySQL はどちらの方法でも最適化しますが、通常は条件にON/USINGを使用する構文JOINが優先されます。ここでa を使用することもできますがNATURAL JOIN、安全ではない可能性があります。

あなたの特定の質問に関しては、MySQL が何らかの方法で注文する理由がわかりません。ORDER BY私が言える唯一のことは、句を指定しない場合、結果の順序に依存するべきではないということです。順序はランダムとして扱う必要があります。Mealではなく で注文しているようですPosition。なぜそうなるのかはわかりませんが、それでも信頼できないかもしれません順序が重要な場合は、 を使用しますORDER BY

于 2012-07-09T14:05:20.537 に答える