Entschuldigung für die Länge der Details erforderlich, um die Frage zu stellen.Verwenden Sie JOIN (?), Um absichtlich mehr Ergebnisse als Zeilen zurückzugeben
Es gibt vier Tabellen (im Zusammenhang mit Forschung, nicht wirklich etwas mit einer Sportanlage zu tun haben). Sie sind wie folgt:
1) Lassen Sie uns sagen, die erste Tabelle ist eine Liste von Tennisplätzen, und lassen Sie uns sagen, es gibt Hunderte von Möglichkeiten (nicht nur drinnen und draußen).
-------------
TENNIS_COURTS
ID Type
-------------
1 Indoor
2 Outdoor
…
2) Wir möchten feststellen, an welchem Tag des Jahres sie vermietet werden können. Um redundante Zeilen zu vermeiden, können Sie einzelne Tage (zB nur den 2. Tag des Jahres, eingegeben als "Von: 2", "Bis: 2") oder Blöcke (zB vom 24. Tag bis zum 25. Tag) eingeben als "Von: 24", "An: 25"). In diesem Beispiel ist das Indoor-Gericht am meisten verfügbar, während das Outdoor-Gericht nur zwei Datumsbereiche hat (offensichtlich unrealistisch für den Winter).
---------------------------
DAYS_AVAILABLE
ID ProductID From To
---------------------------
1 1 2 2 《 Indoor
2 2 24 25 《 Outdoor
3 2 140 170 《 Outdoor
4 1 280 300 《 Indoor
5 1 340 345 《 Indoor
…
3) Wir wollen auch eine Liste von Attributen hinzufügen, die im Laufe der Zeit ziemlich lange wachsen werden. Anstatt diese in eine Feldregel zu integrieren, gibt es eine Attributtabelle.
4) Schließlich möchten wir eine Liste von Überlegungen (oder Faktoren) hinzufügen, die bei der Vermietung eines Gerichts zu berücksichtigen sind. In diesem Beispiel gilt Verletzungsgefahr für Innen- und Außenplätze, aber Sichtbarkeit und Temperatur gelten nur für den Außenbereich.
--------------------------------------------------
CONSIDERATIONS
ID ProductID AttributeID Effect Link
--------------------------------------------------
1 1 1 Risk of injury www… 《 Indoor
2 2 1 Risk of injury www… 《 Outdoor
3 2 2 Hard to see www… 《 Outdoor
4 2 3 Gets cold www… 《 Outdoor
…
Unter Verwendung der einzelnen Tabellen oben möchten wir eine konsolidierte gespeicherte Ansicht erstellen, die im Bereich mindestens eine Zeile für jeden Tag enthält, ab dem ersten Tag des Jahres beginnen (in dem ein Gericht verfügbar) bis zum letzten Tag des Jahres (für den ein Gericht verfügbar ist). Wir möchten auch die anwendbaren Überlegungen für jeden aufgelisteten Tag wiederholen.
Basierend auf den obigen Daten gezeigt, es würde wie folgt aussehen:
----------------------------------------
CONSOLIDATED VIEW
Day Court Consideration Link
----------------------------------------
2 Indoor 《 from DAYS_AVAILABLE
2 Indoor Risk of injury www… 《 from CONSIDERATIONS
24 Outdoor 《 from DAYS_AVAILABLE
24 Outdoor Risk of injury www… 《 from CONSIDERATIONS
24 Outdoor Hard to see www… 《 from CONSIDERATIONS
24 Outdoor Gets cold www… 《 from CONSIDERATIONS
25 Outdoor 《 from DAYS_AVAILABLE
25 Outdoor Risk of injury www… 《 from CONSIDERATIONS
25 Outdoor Hard to see www… 《 from CONSIDERATIONS
25 Outdoor Gets cold www… 《 from CONSIDERATIONS
…
wir die konsolidierte Ansicht abfragen können dann (zB „SELECT * FROM CONSOLIDATED_VIEW wo Tag = 24“) eine einfache Ausgabe zu erzeugen wie:
Court: Indoor
Available: 24th day
Note: Risk of injury (www…)
Hard to see (www…)
Gets cold (www…)
wir wollen das oben gezeigte Beispiel von einer konsolidierten Ansicht erzeugen, weil, sobald die Daten gespeichert sind, ist es nicht häufig wechselnden werden, und wir werden sehr wahrscheinlich nicht einzelne Tage zu einer Zeit sowieso werden abfragt . Es ist wahrscheinlicher, dass ein Webclient alle Zeilen in einem großen Array abruft (TBD basierend auf der Bestimmung der Gesamtgröße) und diese dann Benutzern ohne weitere Serverinteraktion präsentiert.
Können wir die CONSLIDATED_TABLE ausschließlich mit einer SQL-Abfrage erzeugen oder müssen wir eine andere Codierung durchführen (z. B. PHP oder NodeJS)?