Maison > base de données > tutoriel mysql > Un exemple de requête conjointe sur une base de données

Un exemple de requête conjointe sur une base de données

一个新手
Libérer: 2017-10-18 10:05:20
original
1849 Les gens l'ont consulté

Le résultat final de la question est le suivant :

N'est-ce pas très simple ?

Cependant, la base de données est comme ça

Ignorez l'opération de renouvellement et concentrez-vous uniquement sur l'emprunt et le retour des livres. .

C'est-à-dire qu'une même table et un même livre peuvent être déposés, empruntés et restitués, et le même livre peut être prêté ou restitué plusieurs fois.

D'autres attributs sont faciles à parler, mais le plus gênant est l'heure de retour. Pour le même livre, l'opération de retour qui suit immédiatement l'opération d'emprunt est son heure de retour.

La solution est la suivante :

Enregistrez l'opération de prêt dans le tableau A, et l'opération de retour dans le tableau B : il y a 22 lignes dans le tableau A et 19 lignes dans le tableau B

La condition de connexion doit être le numéro de la collection de livres et l'identifiant du lecteur, et le résultat de la connexion est de 58 lignes. Comme il y a plusieurs numéros pour le même titre de livre dans les données, j'ai supprimé le titre du livre. Le résultat de la connexion est le suivant :

Vous pouvez voir cela si What's. encadré c'est le problème ! Le diagramme encadré montre le même enregistrement d’emprunt de livres, qui est connecté à chaque enregistrement de retour de livres. Il ressort des enregistrements que j'ai demandé à cette personne d'emprunter six fois le même livre et d'avoir établi six liens !

Les règles suivantes peuvent nous aider à interroger les bons résultats

1) Dans le même groupe d'opérations d'emprunt et de retour, l'opération d'emprunt doit être avant l'opération de retour

2 ) Exclure le temps de l'opération d'emprunt >Après avoir enregistré l'heure de l'opération de retour, l'heure de retour la plus précoce est cette personne L'heure de retour de ce livre

Le résultat final est comme ceci

Le SQL final. le code est comme ceci


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
Copier après la connexion

utilise une jointure externe gauche, donc le temps de retour pour les livres non retournés est bien sûr NULL. De cette façon, les autres sous-requêtes, unions et pagination ne posent plus de problèmes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal