![]() |
SQL-Anfrage aus anderer Tabelle bilden
Hi...
ich habe da ein Problem Auszug aus Tabelle Relation
Delphi-Quellcode:
Es konne x Zeilen vorkommen
rel1 rel2 rel3 rel4 rel5
zeile1 12 0 0 0 0 zeile2 23 12 0 0 0 zeile3 33 31 0 0 0 zeile4 33 23 31 0 0 . . . jetzt muß ich alle zahlen die nicht doppelt vorkommen in ein SQL Anfrage einbauen
SQL-Code:
Ich stehe da ein wenig auf dem Schlauch... alles in ein Array packen Sortieren und doppelte Einträge rauswerfen?
Select * FROM UMSCHLAG WHERE
REL = 12 OR REL = 23 OR REL = 33 OR REL = 31 Ich benutze SQL-Server2000 und ADOQuery... Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hallo Luciano,
was genau meinst du mit "nicht doppelt vorkommen"? Nicht mehrfach in einer Zeile? Ist eine Zahl auch dann "doppelt", wenn sie in Zeile 1 im Feld rel1 und in Zeile 2 in Feld rel3 vorkommt? Erkläre doch noch einmal etwas genauer, was du brauchst. |
Re: SQL-Anfrage aus anderer Tabelle bilden
..ich verstehe das so, daß du nur die zahlen haben willst, die einmal vorkommen? oder?
.. da ist es wohl am sinnvollsten, wie du schon gesagt hast, alle auslesen und einzeln vorkommende filtern. |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi...
Genau, dann ist sie auch doppel! Jede Zahl darf nur einmal vorkommen das heißt ich muß aus allen Zeilen(1..n) alle Zahlen(rel1..rel5) zusammen suchen und dann alles Dopplete aussortieren und aus denen die übrig bleiben eine SQL-Anfrage machen. Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
...warum dann nochmals eine abfrage, du hast doch dann alle zahlen aus der db..
..vielleicht solltest du dir eine strategie überlegen, daß erst keine doppelten eingeschrieben werden, aber das hängt ja sicherlich von deinen bedingungen ab |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi ibp
aus den resultierenden Zahlen muß ich mir andere Datensätze aus der Tabelle UMSCHLAG suchen um diese dann berechnen zu könne... hinter jeder rel(nr) steht ein Betrag der nur für diesen einen bestimmtnen Satz genommen werden kann. Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi Luciano,
Deine Tabelle würde ich in ihrer jetzigen Struktur nicht weiterverwenden. Schaue dir mal Nested Tables an, damit ließe sich das eleganter lösen. :gruebel: Dieses rel01, rel02, ... Gibt es dafür _wirklich_ einen Grund? Wenn du pro DS mehrere DS in einer anderen Tabelle verknüpfen willst, kannst du doch auch StiNo Foreign keys verwenden. |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi Robert_G
Ich bin leider an die jetzige Tabellenstruktur gebunden :? und muß mir leider versuchen so eine Lösung zu "backen". Die Komplette Struktur der ganzen DB ist fürn A*** aber leider kann ich es bzw. darf ich es nicht ändern. Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
..erläutere doch mal genauer die art der verknüpfung, wird jeder datensatz in umschlag mit einem datensatz in relation verknüpft oder wie?
da muß es doch einen zusammenhang geben es kann doch nicht sein, daß jemand eine tabelle mit einer anderen verknüpft und man diese nur über einfach vorhandene werte ermitteln kann, die irgendwo stehen.. |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi ibp
Genau so ist es aber. Sorry für meine späte Antwort, ich war übers WE nicht da. Es besteht keine Verknüpfung zwischen den Tabellen. Die Daten in der Tabelle Umschlag werden wirklich nur über die Daten in der Tabelle Relation zusammengesucht und danach berechnet. :( Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
--blöd--
dann lad dir die daten aus der tabelle relation bei programmstart in ein array, dann kannst du dei ganze zeit darauf zugreifen.. |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi ibp
genau das wollte ich vermeiden oder eine andere Lösung finden :gruebel: ich werde aber wohl doch bei einem Array bleiben müssen. Danke für eure bemühungen und Tipps... Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
...oder du erstellst eine neue tabelle, die mit direkten verweisen auf umschlag zeigt, berechnet aus relation..
|
Re: SQL-Anfrage aus anderer Tabelle bilden
Das verstehe ich gerade mal nicht wie du das meinst. :gruebel: Kannst du mir das mal genauer erklären?
Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
..bis jetzt ist es ja so, daß du die referenz berechnest oä. berechne doch einmal für alle datensätze und hinterlege das ergebnis in eine neue tabelle, von der du dann die referenzen für umschlag nimmst...
vielleicht solltest du den direkten zusammenhang der tabellen mal aufzeigen, dann fällt mir vielleicht ja noch etwas anderes ein... |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi..
SQL-Code:
So ist der Aufbau, die Tabellen sind über Primary Key miteinander Verknüpft.
Kontrakt----Partie-----Umschlag
| | Fakturierung---Vonnach---Relationen Es geht darum das die Richtigen "Umschläge" zu den vorhandenen Relationen in einem Grid angezeigt werden und der User dann einfach einen Umschlag auswählen kann der dann berechnet werden soll. Die Berechnung funktioniert soweit ja, es geht lediglich darum wie ich nur die passenden Umschläge in einem DBGrid angezeigt bekomme. Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
ach so, jetzt verstehe ich, relation ist in dem sinne keine verknüpfung der tebellen sondern der inhalte....
naja, da bleibt dir sicherlich nichts anderes übrig, als die betreffenden daten aus der relation zu lesen unnd dann alle mehrfach vorkommenden zahlen zu ignorieren.. |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi ibp
das habe ich auch befürchtet... :evil: danke für die Hilfe, dann werde ich mir mal ein Array bauen :? Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
Ich verstehe immer noch nicht, warum du nicht einfach dem Ersteller der Tabellenstruktur mit Anlauf in den Hintern trittst. :gruebel:
So wie es jetzt aussieht, wäre zwar eine Lösung über Abfragen _möglich_ , aber sie wäre verdammt widerlich. Frage mal den Herren Tabellenverhunzer warum ihr den SQL Svr benutzt und nicht mySQL oder ADS (am Besten _bevor_ du Anlauf nimmst!!! :mrgreen: ), so wie das für mich aussieht, verwendet ihr KEINERLEI Features des SQL Svr. |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi Robert_G
da hast u vollkommen recht aber jetzt sieht eben die Problemstellung so aus und ich muß dafür jetzt mit diesen Vorgaben eine Lösung finden. Am liebsten würde ich sagen, alles in die Tonne kloppen und neu machen aber das darf ich nicht und die Zeit dazu habe ich leider auch nicht :cry: Ich muß mir halt so versuchen zu helfen :? Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
Ich wollte einfach mal eine unreife Lösung posten für mein Problem, zumindest funktioniert es
Delphi-Quellcode:
while not DModFakturierung.Q_FFAKTRELA.Eof = True do
begin rela1[z] := StrToInt(DModFakturierung.Q_FFAKTRELARelation1.Value); DModFakturierung.Q_FFAKTRELA.Next; inc(z); end; for i := 0 to (y - 1) do begin if i = 0 then begin sRela1 := IntToStr(rela1[i]); s1 := '(RELATION = '+QuotedStr(sRela1)+') '; end; if i > 0 then begin sRela1 := IntToStr(rela1[i]); s1 := 'OR (RELATION = '+QuotedStr(sRela1)+') ' end; s := s + s1; end;//END FOR Schleife Result := 'AND ('+s+')'; Greets Luciano |
Re: SQL-Anfrage aus anderer Tabelle bilden
... wie wäre es damit um doppelte zu filtern...
Delphi-Quellcode:
procedure ....
var a: array of integer; i,j,anz: integer; begin while not DModFakturierung.Q_FFAKTRELA.Eof do begin i:=StrToInt(DModFakturierung.Q_FFAKTRELARelation1.Value); anz:=length(a); // anzahl der element if i>=anz then begin setlength(a,i+1); // anzahl vergrößern for j:=anz to i do a[j]:=0; // intialisieren end; // if inc(a[i]); // diese zahl zufügen DModFakturierung.Q_FFAKTRELA.Next; end; // while for i:=0 to length(a)-1 do if a[i]=1 then showmessage(inttostr(i)+' ist nur einmal vorhanden'); end; [edit] falls 0 auch vorhanden ist, dann intialisiere und frage ab auf -1[/edit] |
Re: SQL-Anfrage aus anderer Tabelle bilden
Hi ibp
Thx, ich werde es mal bei Gelegenheit testen, bin etwas unter Zeitdruck... :? und muß mal etwas lauffähiges vorzeigen, optimieren kann ich dann immer noch. Greets Luciano |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz