|
Abfrage mit Abfrage verknüpfen
Hallo zusammen,
ein schönes neues Jahr zuerst einmal! Ich stehe derzeit wie der "Ochs vorm Berg vor einem Problem" und komme nicht dahinter: Ich habe eine Abfrage RE1, in der aus einer Verknüpfung von rechnung.df, kunden.df und fakt.df eine Teilmenge ausgewählt wird (zu jeder Rechnung gibt es dadurch mehrere Zeilen). Im weiteren Verlauf benötige ich eine Abfrage, in der ich nur die dazugehörigen einzelnen Rechnungen habe. Hatte mir einfach vorgestellt, mich auf RE1 zu beziehen: FROM rechnung WHERE rech_nr IN SELECT rech_nr FROM RE1 Das funktioniert aber nicht bei mir (vielleicht geht es auch nicht). Muss man dem Compiler vielleicht irgendwie mitteilen, dass es sich bei RE1 nicht um eine Datenbank, sondern um eine Abfrage handelt? Dann habe ich die komplette Abfrage von RE1 in das IN SELECT gesetzt, funktioniert aber auch nicht richtig (Ende der RAM-Disk und andere unerklärliche Fehler, Fehlermeldung VI2REOP Zeile 164: Dateiende RAMD:&4 - wobei auf dem Laufwerk, auf dem ich RAMD liegen habe, noch beliebig Platz ist und die &4 nur 120kb groß ist. Die Fehlermeldung kommt, wenn ich das Programm ein paar mal hintereinander laufen lasse. Availmem liegt die ganze Zeit bei 11000 und reduziert sich nicht weiter). Ich könnte natürlich RE1 in eine temporäre Datenbank zwischenspeichern und dann diese in das IN SELECT nehmen, halte ich aber für nicht geschickt. Hat jemand auf die Schnelle eine andere Idee? Gruß Hans Jürgen (hjlint#) P.S.: Hier die Abfragen im Original: PHP-Code:
PHP-Code:
PHP-Code:
|
|
Ich habe diese IN SELECTS nie begriffen :-) aber eine Lösung die eventuell klappt ist diese hier:
PHP-Code:
|
|
Das IN SELECT-Abfragen kann ich eigentlich ganz gut, nur heute will es irgendwie nicht. Liegt aber sicher an den Parametern.
Die Variante mit dem "JA" habe ich auch schon probiert. In der Abfrage geht nur "JA", nicht TRUE und im Compiler ist es anscheinend genau anders herum, da führt das "JA" zu einer Fehlermeldung. Gruß Hans Jürgen |
|
Hallo !
Du hast natürlich recht , es heiß TRUE (ich habe schon ewig keine g'scheiten Programme mehr geschrieben). Trotzdem glaube ich beim IN SELECT gehört das WHERE einzug TRUE hinten und nicht in der Mitte. Übrigens benutze bitte wenn möglich die PHP Code Funktion im Editor, daß sieht besser aus auch wenn es kein PHP ist :-) Danke |
|
Ich hatte mich schon gewundert, wieso das plötzlich so gut ausgesehen hat. Hast Du umgesetzt, richtig?
Kannte ich noch nicht - mache ich natürlich in Zukunft. |
|
Ja - ich hab deinen Beitrag editiert; das mache ich aber eh nicht oft :-)
|
|
Ein SQL Befehl auf ein View geht im OAIII nicht nur auf Datenbanken
rekursive Abfragen müssten eigentlich so gehen: PHP-Code:
Gruß Frank Schuffenhauer |
|
Die Klammer könnte es gewesen sein, die den Fehler verursacht hat. Teste ich mal morgen, danke!
Aber wo ist denn in Deiner Formel eine Rekursion auf eine Nicht-Datenbank, also einen vorher definierten View? VIEW re=FROM... VIEW re1=FROM ... in SELECT...FROM re Gruß Hans Jürgen |
|
nein
bei mir nicht, stand aber in Deiner ersten Angabe "ich habe eine Abfrage RE1, in der aus einer Verknüpfung von rechnung.df, kunden.df und fakt.df ..." Leider kann ich nicht ersehen, welche Felder aus welcher Datei stammen, sonst hätte ich Dir die meiner Ansicht nach richtige Abfrage hingeschrieben Gruß Frank Schuffenhauer |
|
Hallo Frank,
dann noch mal von vorne, falls es wirklich möglich ist, beim IN SELECT nicht nur Datenbanken, sondern auch VIEWs zunutzen (vereinfacht dargestellt hätte ich gerne Folgendes): PHP-Code:
PHP-Code:
Danke für die Hilfe! Gruß Hans Jürgen |
| Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.