Heim > Datenbank > MySQL-Tutorial > Hauptteil

Ein Beispiel für eine gemeinsame Abfrage einer Datenbank

一个新手
Freigeben: 2017-10-18 10:05:20
Original
1823 Leute haben es durchsucht

Das Endergebnis der Frage ist folgendes:

Ist das nicht ganz einfach?

Die Datenbank sieht jedoch so aus:

Ignorieren Sie den Verlängerungsvorgang und konzentrieren Sie sich nur auf das Ausleihen und Zurückgeben von Büchern. .

Das heißt, derselbe Tisch und dasselbe Buch können hinterlegt, ausgeliehen und zurückgegeben werden, und dasselbe Buch kann mehrmals ausgeliehen oder zurückgegeben werden.

Über andere Attribute lässt sich leicht sprechen, aber das problematischere ist die Rückgabezeit. Für dasselbe Buch ist die Rückgabezeit, die unmittelbar auf die Ausleihe folgt, die Rückgabezeit.

Die Lösung lautet wie folgt:

Erfassen Sie den Leihvorgang als Tabelle A und den Rückgabevorgang als Tabelle B: Es gibt 22 Zeilen in Tabelle A und 19 Zeilen in Tabelle B

Die Verbindungsbedingung sollte die Nummer der Buchsammlung und die Leser-ID sein, und das Ergebnis der Verbindung sind 58 Zeilen. Da es in den Daten mehrere Nummern für denselben Buchtitel gibt, habe ich den Buchtitel entfernt. Das Ergebnis der Verbindung ist wie folgt:

Das können Sie sehen, wenn Was gerahmt ist das Problem! Das Kastendiagramm zeigt denselben Buchausleihdatensatz, der mit jedem Buchrückgabedatensatz verbunden ist. Aus den Aufzeichnungen geht hervor, dass ich diese Person sechsmal gebeten habe, dasselbe Buch auszuleihen, und sechs Verbindungen hergestellt habe!

Die folgenden Regeln können uns dabei helfen, die korrekten Ergebnisse abzufragen

1) In derselben Gruppe von Ausleih- und Rückgabevorgängen muss der Ausleihvorgang vor dem Rückgabevorgang erfolgen

2 ) Schließen Sie die Ausleihvorgangszeit aus >Nach der Aufzeichnung der Rückgabezeit ist die früheste Rückgabezeit diese Person Die Rückgabezeit dieses Buches

Das Endergebnis ist wie folgt

Das endgültige SQL Der Code sieht so aus:


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
Nach dem Login kopieren

verwendet einen linken äußeren Join, daher ist die Rückgabezeit für nicht zurückgegebene Bücher natürlich NULL. Auf diese Weise stellen andere Unterabfragen, Unions und Paging kein Problem mehr dar.

Das obige ist der detaillierte Inhalt vonEin Beispiel für eine gemeinsame Abfrage einer Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage