Die Perpetual Grün - Protokolleintrag # 7.1
Dieser Artikel erschien auf http://www.undu.com
Normalisierten Daten ist groß. Ein Beispiel für eine bestimmte Person, und nicht um alle Daten zu halten, die aus anderen Daten über die Flugextrapoliert werden kann. Schlanke, mittlere, und gelegentlich eine gigantische Schmerzen.
Ein Client hat mich gebeten, eine einfache Frage. Wir können einen Inventarbericht sehen, nur die Teile, die zu einer Gruppe von Rohstoff, der mehr als einen Teil in sich hat gehören? Dies würde eine bessere Gesamtansicht des Rohmaterials wurde auf lange Sicht. (Wir Min/Max und bereits fordern Listen rote Fahne automatischen Kauf von Rohstoffen. Wollte das globale Sicht der Mehrfachnutzung von Rohstoffen zu sehen)
Einfach. Ich werde die Datenbank Inventar aller Teile, in denen die RMG (Rohstoff Gruppe Code) hat mehr als eine Instanz zu fragen. In Paradox, würde ich ein CALC zählen alle Abfragen der RMG, dann eine zweite Abfrage, die für alle Datensätze in der Inventardatenbank, die in Reaktion auf eine temporäre Tabelle sind gefragt. Paradox wäre abräumen Antwort auf meine Wesen mit ihm getan. Die ganze Übung wäre trivial Codierung sein.
Aber, wie es geht vor Ort mit der gleichen SQL-Datenbank Paradox zu Delphi? Eine Antwort, die gearbeitet hat, war es, die gleichen Fragen über fragen, aber ich musste aufpassen, um die Datenbank Antwort im wirklichen Leben zu schaffen und löschen Sie ihn nach der Tat. Noisome. Auch gab es eine Möglichkeit, dies in einer SQL-Anweisung Super tun? Etwas über verschachtelte Aussagen?
Es ist eine Lüge, die Menschen. Verschachtelte SQL scheint nicht mit lokalen SQL läuft auf Paradox-Tabellen zu arbeiten. Nach einiger Kopf hämmerte, gab ich zu Niederlage und gingen auf die Website-Suche Tamarack (developers.href.com) und begann, mich. Ich habe zwei Forschungs, bevor ich die Weisheit eines Koterski Steve Borland erfüllt. Es scheint, dass sowohl SQL wiz lokal. Extrapoliert man einige seiner Antworten und testen ein wenig ", fand ich eine schöne, saubere Lösung für das Problem. Und diese Lösung hat andere Anwendung, wenn Sie weiterhin die Paradox-Datenbank in Ihren Anwendungen verwenden.
Erstens, eine SQL-Datei namens I "CountRMG.SQL." Das entspricht meiner ersten Abfrage von oben:
/ *
Alias: theApp
LiveAnswer: FALSCH
* /
Wählen RMG, count (RMG) als MULTI
Von "INVENTRM.DB"
RMG GROUP BY
Dies ist ein einfaches Beispiel, aber Sie könnten genauso gut machen die Gesamtsumme. Die Idee ist, einige Daten Aggregate bekommen. Dies führt zu den tatsächlichen im Programmcode verwendeten Abfragen:
SELECT R. *
DA "INVENTRM.DB" R ", COUNTRMG.SQL" M
WHERE ((R.RMG = M.RMG)
und (M.MULTI> 1))
Das Geheimnis ist die Verbindung der zweiten Tabelle mit dem SQL gespeichert "virtuelle". Es wird geladen und ausgeführt werden und wie eine temporäre Tabelle handeln Speicher auf INVENTRM mit Filter.
Die Möglichkeit der Verwendung dieses gefälschte verschachtelte SQL sind sicherlich nicht zu machen Pläne, mehrere Instanzen eines Sekundärindexfeld zu finden beschränkt. Wie bereits erwähnt, können Sie Summen tun könnte einen Datumsbereich und produzieren alle Elemente, die in diesem Bereich in spezifische fallen. Fast alle von ihnen werden zu einer Abfrage in zwei Phasen und für Ihre Antwort führen.
Gary Mugford
Idee Mechaniker, Bramalea ON Canada
mugford@aztec-net.com
Jetzt Kinder Eine Frage zu einer Zeit!
(0)
(0)
Link zur Website / Blog :
Link für Forum (BB- Code) :
Kommentare - 0