AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage über mehrere Arrays

Ein Thema von thomasch · begonnen am 30. Dez 2005 · letzter Beitrag vom 31. Dez 2005
Antwort Antwort
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#1

Abfrage über mehrere Arrays

  Alt 30. Dez 2005, 10:59
Hallo,
ich habe 2 Arrays (A und B). Dabei enthält B Fremdschlüsselwerte von A.
Wie kann ich die beiden Arrays am besten verbinden?

Beispiel:
Array A:
ID | Anzeigeart
---------------
1 | 0
2 | 0
3 | 1

Array B:
Anzeigeart | Farbe | Größe
---------------------------
0 | rot | klein
1 | gelb | klein

Letztendlich suche sich sowas wie select * from A,B where A.Anzeigeart=B.Anzeigeart Der einfachste Weg wäre jetzt, für jedes Element in A B solange zu durchlaufen, bis es passt - das kommt mir aber ziemlich unelegant vor.

Wie mach ich das richtig?

Thomasch
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#2

Re: Abfrage über mehrere Arrays

  Alt 30. Dez 2005, 11:08
Falls die Anzeigearten im Array B von 0 beginnend aufsteigend sortiert vorliegen und der Indexbereich des Arrays B ebenfalls bei 0 beginnt, könnte man die Anzeigeart direkt als Index im Array betrachten.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Abfrage über mehrere Arrays

  Alt 30. Dez 2005, 11:26
Zitat von tomsel:
Falls die Anzeigearten im Array B von 0 beginnend aufsteigend sortiert vorliegen und der Indexbereich des Arrays B ebenfalls bei 0 beginnt, könnte man die Anzeigeart direkt als Index im Array betrachten.
Da habe ich wohl etwas zu stark vereinfacht:
- mein Fremdschlüssel besteht ja nach Tabelle[1] aus bis zu zwei Strings
- selbst dort, wo der FK ein Integer ist beginnt der nicht zwangsläufig bei 0

Kann ich das evtl in ein Datset scheiben und dort auswerten?
Da ich die DevExpressTools habe dachte ich schon daran, die Arrays in ein Dataset zu schreiben und dort eine Query drüber laufen zu lassen - nur bekomme ich keine 2 Arrays in ein Dataset und irgendiwe auch keine Abfrage über 2 Datasets


Thomasch
[1]ich bekomme die Arrays über eine andere Anwendung aus einer DB, auf die meine Anwendung keinen Zugriff haben soll.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Abfrage über mehrere Arrays

  Alt 30. Dez 2005, 11:31
Was bzw. wie willst Du es denn darstellen?
Als Master-Detail, als gruppierte Tabelle?
Tipp:
SQL-Code:
Select A.AnzeigeArt, B.Farbe, B.Groesse
 from a join b on a.AnzeigeArt = b.anzeigeArt
Das in einer DevExpress QuantumGrid anzeigen.
Die GroupIndex-Eigenschaft der Spalte 'AnzeigeArt' auf 0 setzen.
Dann noch ein wenig mit den MyGridView.OptionsView rumspielen und fertig ist das.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#5

Re: Abfrage über mehrere Arrays

  Alt 30. Dez 2005, 11:43
Verstehe ich richtig: ein Programm soll Daten darstellen, auf die es eigentlich keinen Zugriff hat?. Die Daten erhält es dabei als Arrays (in Form einer Datei oder wie?) von einem anderen Programm, welches Zugriff auf die Datenbank hat. Schon seltsam, aber sei's drum. Warum gibt das zweite Programm (das mit Datenbankzugriff) die Daten nicht als genau die Relation zurück, die das andere Programm (das ohne Datenbank) für die Anzeige benötigt? Also zum Bsp.: R[ID, Farbe, Größe]
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#6

Re: Abfrage über mehrere Arrays

  Alt 30. Dez 2005, 12:39
Ok, hier mal die ausführlichere Version:

Mein Programm ermittelt IDs von AutoCAD Elementen. Diesen Elementen sind in der Datenbank Eigenschaften zugeordnet und jeder Eigenschaft(die aus mehreren Schlüssen bestehen kann) eine Darstellungsart.

Den Zugriff auf die DB realisiert aus diversen Gründen ein anderes Programm.

Ich ermittle zunächst alle IDs, sende diese enblock an das Programm und erhalte die Eigenschaftsschlüssel in einem Array.

Danach hole ich mir alle Darstellungsarten für die jeweilige Eigenschaft - ebenfalls in einem Array.

Ziel ist, die Elemente mit den passenden Darstellungsarten zu versehen.

Ursprünglich dachte ich, es wäre besser, mir nur die verwendeten Darstellungsarten geben zu lassen, wozu ich sowas wie ein select distinct... auf das zuerst ermittelte Array bräuchte.

Mittlerweile denke ich, es ist wohl stressfreier, mir alle Darstellungsarten der jeweiligen Eingeschaft geben zu lassen und für jedes Element das Array der Darstellungsarten zu durchlaufen. Begeistert bin ich davon aus diversen Gründen nicht wirklich.

Die Variante QuantumGrid in meinem umsichtbaren Form lass ich mir mal durch den Kopf gehen.

Ob ich mir gleich alle Werte so von dem anderen Programm ausgeben lassen kann kläre ich nächstes Jahr - die Idee an sich ist nicht schelcht, nur muss da noch jemand überzeugt werden.

Guten Rutsch

Thomasch
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Abfrage über mehrere Arrays

  Alt 30. Dez 2005, 13:54
Schreib Dir zwei TcxCustomDataSource-Klassen. Eins für B, eins für B. Fertig. Steht sehr ausführlich in der OH, wie das geht.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
dimo

Registriert seit: 28. Okt 2005
22 Beiträge
 
#8

Re: Abfrage über mehrere Arrays

  Alt 31. Dez 2005, 15:41
Der kleinere beider Arrays sortieren. Den größeren durchlaufen und einen Joinpartner effizient (wegen der Sortierung) in den Kleineren finden. Es gibt natürlich viele Möglichkeiten, kannst dir z.B. Kemper/Datenbanken anschauen, da gibt es Einiges über Join-Implementierungen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz