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

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

一个新手
一个新手original
2017-10-18 10:05:201820parcourir

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

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!

Déclaration:
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