ホームページ >データベース >mysql チュートリアル >データベースに関する共同クエリの例

データベースに関する共同クエリの例

一个新手
一个新手オリジナル
2017-10-18 10:05:201845ブラウズ

質問で求められる最終結果はこれです

とても簡単ではないでしょうか?

ただし、データベースはこんな感じです

更新作業は無視して、本の貸し出しと返却だけに集中してください。

つまり、同じテーブル、同じ本を預けたり、借りたり、返したりすることができ、同じ本を複数回借りたり返したりすることも可能です。

他の属性について話すのは簡単ですが、より厄介なのは、同じ本の場合、貸出操作の直後の返却操作が返却時間です。

解決策は次のとおりです:

貸し出し操作をテーブル A として記録し、返却操作をテーブル B として記録します。テーブル A には 22 行、テーブル B には 19 行があります

接続条件は次の数値である必要があります。書籍コレクションとリーダー ID の接続結果は 58 行になります。データ内に同じ本のタイトルの番号が複数あるので、本のタイトルを削除した結果はこんな感じです

上のレコードボックスが枠で囲まれている場合、問題があることがわかります。ボックス図は、同じ本の貸出記録を示しており、各本の返却記録に関連付けられています。記録を見ると、この人に同じ本を 6 回借りてもらい、6 回つながりました。

次のルールは、正しい結果をクエリするのに役立ちます

1) 借用操作と返却操作の同じグループでは、借用操作は返却操作の前にある必要があります

2) 借用操作時間 > 返却操作のレコードを除外した後時間、一番早い 本の返却時間はこの人です 最終結果はこんな感じです

最終的なSQLコードはこんな感じです

select A.*,min(B.操作时间) 还书时间 from aleft join 
 bon a.书籍的典藏编号 = b.书籍的典藏编号 and a.读者id = b.读者id 
and a.操作时间<b.操作时间group by a.书籍的典藏编号,a.操作名称,a.操作时间,a.读者id

左外部結合を使用すると、返されないものは当然です。予約時間は NULL です。このようにして、他のサブクエリ、ユニオン、ページングは​​問題なくなります。

以上がデータベースに関する共同クエリの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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