Announcement

Collapse
No announcement yet.

Query auf Query

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Query auf Query

    Hallo,<br>mit einer TQuery jage ich eine SQL-Abfrage auf eine Datenbank. Diese Abfrage berechnet mir auch einige Werte. Jetzt möchte ich mit einer zweiten TQuery auf die Ergebnismenge der ersten TQuery mit Max und Min zugreifen. Wie soll ich das machen ?<br>:-) Jens Schumann

  • #2
    Hallo,

    bei derartigen Fragen ist es sehr wichtig, die verwendete Datenbank zu nennen. Im Fall einer <b>Paradox</b>-Datenbank kann die TQuery-Abfrage auf eine <b>QBE</b>-Ergebnismenge losgelassen werden:
    <pre>
    SELECT * FROM "ParadoxView.qbe"
    </pre>
    Im Fall einer echten SQL-Datenbanken wird ein in der Datenbank abgelegter <b>VIEW</b> über eine zweite SELECT-Abfrage als Sicht-Tabelle verwendet. Alternativ kann auch eine <B>Stored Procedure</b> als "Tabelle" über eine zweite SELECT-Anweisung abgefragt werden:
    <pre>
    SELECT * FROM GetFirstXKunden(10)
    </pre&gt

    Comment


    • #3
      Hallo,<br>es handelt sich um eine Access-Datenbank.<br>:-) Jens Schuman

      Comment


      • #4
        Hallo Herr Kosch,<br>ich habe es mal mit ParadoxView.qbe versucht. Jedoch befindet sich auf meiner Festplatte keine Datei mit der Endung qbe, nachdem ich eine Paradoxtabelle geöffnet habe. Wie geht denn das?<br>:-) Jens Schuman

        Comment


        • #5
          Hallo Jens,
          QBE steht für Query by Example und ist ein - ich würde mal sagen Pendant von Borland zu SQL. Ich kenne nur ein Programm (neben wahrscheinlich Paradox) mit dem man QBE dateien erstellen kann und das ist die Datenbankoberfläche von Borland (war oder ist? im Lieferumfang von Delphi). Die Dateien haben z.B. folgendes Format:
          Query<br>
          ANSWER: :PRIVAT:ANTWORT.DB<br>
          <br>
          :Alias1:Tabelle1 | Feld1 | Feld2 | Feld3 |<br>
          | _Verbindung1 | | | <br>
          <br>
          :Alias2:Tabelle2 | Feld1 | Feld2 | Feld3 | <br>
          | _Verbindung1 | | Bedingung1 | <br>
          <br>
          EndQuery<br>

          für :<br>
          select Tabelle1.Feld1, Tabelle1.Feld2, Tabelle1.Feld3,
          Tabelle2.Feld1, Tabelle2.Feld2, Tabelle2.Feld3 from Tabelle1 inner join Tabelle2 on Tabelle1.Feld1=Tabelle2.Feld1 where Tabelle2.Feld3=Bedingung1

          Alles Klar ;-
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Moin Falk,<br>vielen Dank für die Anwort. Aber ich muß zugeben, nix is klar.<br>?:-) Jens Schuman

            Comment


            • #7
              Hallo Jens,

              zu versuchen eine QBE-Datei mit einem ASCII-Editor zu programmieren ist sicherlich keine gute Idee. Wenn Du eine solche Datei mit einem Programm (Paradox, DB-Oberfläche) erstellen kannst, dann kannst Du diese (bzw. deren Resultat) bei einem SQL-Zugriff über die BDE wie eine Tabelle ansprechen. Die Datei muß dabei in dem Verzeichnis liegen auf das der BDE-Alias zeigt.
              Das ganze ist also die Realisierung einer View für Desktopdatenbanken durch die BDE.

              Gruß Fal
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment


              • #8
                Hallo,

                bei ACCESS handelt es sich <b>nicht</b> um eine SQL-Datenbank, so dass alle SQL-Abfragen simuliert werden müssen. Daher ist es effektiver, alle Datensätze der ersten TQuery-Abfrage vor Ort in einer Schleife durchzugehen, um "von Hand" nach dem MIN/MAX-Wert zu suchen.

                Eine QBE-Datei macht nur bei Paradox bzw. dem direkten Zugriff über die BDE Sinn

                Comment


                • #9
                  Hallo,<br>ich habe das Problem inzwischen mit TBatchmove gelöst. Da meine Anwendung die BDE und DAO verwendet, läuft die Sache ganz gut. Das speichern der Query mit TBatchmove geht, entgegen meinen Erwartungen, sehr schnell. Sogar wesentlich schneller als die darauf folgende Min/Max Suche. Eine "feste Verdrahtung" der SQL-Abfrage kommt nicht in Frage, weil der Anwender sich seine SQL-Anweisung zusammen klickt.<br>Es handelt sich um eine Anwendung zur kartographischen Visuialisierung soziodemografischen und firmeninternen Daten. Diese Daten kann der Anwender frei miteinander verknüpfen. Das beduetet, die SQL-Abfrage ist immer wieder anders.<bR> :-) Jens Schuman

                  Comment

                  Working...
                  X