ホームページ >データベース >mysql チュートリアル >mysqlの自己接続を解析してアソシエーションに参加する

mysqlの自己接続を解析してアソシエーションに参加する

怪我咯
怪我咯オリジナル
2017-04-30 09:34:283426ブラウズ

この記事では、主に mysql の自己結合と結合関連の情報を紹介します。この記事の紹介は、必要な方には参考になると思います。下に。

1. mysql 自己接続

mysql は、情報をクエリするとき にそれ自身に接続する (自己接続) 必要があるため、テーブルのエイリアスを定義する必要があります。以下に例を示します。購入価格が Huihui よりも高いすべての情報を見つける必要があります。

通常、このテーブルを確認するときは、最初に次のステートメントを使用して操作します:

SELECT * FROM shoping WHERE price>27

ご想像のとおり、データベース テーブルの詳細なデータやデータ量がかなり多い 毛織物?データベース管理者は、必要なデータを迅速に見つけるために他の方法を使用する必要があります。

ステップバイステップクエリ

最も単純な方法であり、操作を考えるのが最も簡単です:

SELECT price FROM shopping WHERE name='惠惠' //得出price查询结果为27
SELECT * FROM shopping WHERE price>27

自己接続方法と比較して、この方法は中間結果に対する手動介入を必要とし、明らかに役に立ちませんプログラムの自動処理動作まで。

自己接続方法:

SELECT b.* 
from shopping as a,shopping as b
where a.name='惠惠' 
and a.price<b.price 
order by b.id

次のテーブル情報を取得できます:


注:

エイリアスaとbは名前が異なりますが、それらは同じテーブルであり、エイリアスを定義する 目的は、自分で削除したり選択したりしやすくすることです。

select through(中間テーブル)を実行して得られたb.*が最終結果です。

Subquery

Subquery も一般的に使用される方法で、select 内に select をネストします。

実装コードは次のとおりです。

SELECT * FROM shopping 
WHERE price>(select price from &#39;shopping&#39; where name=&#39;惠惠&#39;)

結果は次のとおりです。2 つのメソッドで得られる結果は同じであることがわかります。 INNER JOIN

内部結合の主な機能は、テーブル内に少なくとも 1 つの一致がある場合に結果セットが返されることです。内部結合とここでの結合は同じ機能を持つため、一緒に紹介します。
以下は、商品テーブルとカテゴリーテーブルの 2 つのテーブルです:

SELECT * FROM goods INNER JOIN category 
ON goods.id=category.goods_id 
ORDER BY gods.id

結果は次のとおりです:


LEFT

JOIN

LEFT J OINキーワード会議 リターンズ右側のテーブル (table_name2) に一致する行がない場合でも、左側のテーブル (table_name1) のすべての行。プロジェクトで作業する場合は、左側の関連付けを使用することをお勧めします。ただし、テーブルのリレーションシップが多数あり、1 つのテーブルは a への左結合であると同時に、b への右結合でもあります。この場合、右結合を追加する方が記述しやすい場合があります。

最初の 2 つのテーブルを適用して、左結合クエリを実行します:

SELECT goods.*,category.cate_name 
FROM goods LEFT JOIN category 
ON goods.id=category.goods_id 
ORDER BY goods.id

RIGHT
JOIN

RIGHT JOIN キーワードは、右テーブル (table_name2) のすべての行を返します。ただし、左側のテーブル (table_name1) には一致する行がありません。最初の 2 つのテーブルを適用して正しい相関クエリを実行します。

SELECT a.goods_name,a.price,b.*
FROM goods as a
RIGHT JOIN category as b
ON a.id=b.goods_id
ORDER BY b.id


複数のテーブルの相関の場合は、相関ステートメントをさらにいくつか追加するだけです。

以上がmysqlの自己接続を解析してアソシエーションに参加するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。