AGB  ·  Datenschutz  ·  Impressum  







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

Kleines Logikproblem

Ein Thema von Sanguis · begonnen am 19. Mär 2010 · letzter Beitrag vom 19. Mär 2010
Antwort Antwort
Sanguis

Registriert seit: 20. Jul 2005
Ort: Essen
146 Beiträge
 
#1

Kleines Logikproblem

  Alt 19. Mär 2010, 02:54
Datenbank: SQLite • Version: 3 • Zugriff über: ASQLite Komponenten
Hallo,

ich schon wieder - sorry. Ich bekomme langsam Kopfschmerzen, von einem kleinen Logikproblem.
Ich habe eine Person, die hat einen Over Wert in verschiedenen Gebieten. Die Gebiete sind noch Kontinenten zugeordnet. Also 3 Tabellen. 1ne für die Gebiete, eine für die Kontinente und eine mit dem Wert der Overness, der workerID und der GebietID.
Nun wollte ich, die Gesammt Overness der Kontinente eines Workers auflisten. Die WorkerID ist gegeben. Darüber komme ich auch an die Gebiete und damit den Kontinent. Aber auflisten wollte ich es in T-Form. Ich habe mit 2 Shapes ein T gemacht und rechts und links je eine ListBox. Ich kann diese füllen, indem ich pro Gebiet den Kontinent rausfinde und die Overness. Allerdings sieht mein T dann so aus:

=========||==========
Amerika || 100
Amerika || 80
Amerika || 100
Europa || 100
||

Mein Problem: Ich möchte nur 1 mal einen Kontinent auflisten und die Overness addieren. Also 1 mal Amerika mit 280.

Puh, kompliziert. Ich hoffe, jemand hat es verstanden und kann mir helfen.

Gruß,
Andreas
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#2

Re: Kleines Logikproblem

  Alt 19. Mär 2010, 02:58
Das müsste mit sum() und GROUP BY ( http://sql.1keydata.com/de/sql-group-by.php ) machbar sein.
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Kleines Logikproblem

  Alt 19. Mär 2010, 08:03
Zitat:
Ich hoffe, jemand hat es verstanden und kann mir helfen.
Also ich nicht...

Zitat:
Over Wert
Wert der Overness
Gesammt Overness der Kontinente eines Workers
Gruß
s-off
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Kleines Logikproblem

  Alt 19. Mär 2010, 11:32
Zitat von s-off:
Zitat:
Ich hoffe, jemand hat es verstanden und kann mir helfen.
Also ich nicht...

Zitat:
Over Wert
Wert der Overness
Gesammt Overness der Kontinente eines Workers

Das kann man so unterschreiben. Ich habe keine Ahnung was du überhaupt machen willst, Sangius.
Ansgar
  Mit Zitat antworten Zitat
Sanguis

Registriert seit: 20. Jul 2005
Ort: Essen
146 Beiträge
 
#5

Re: Kleines Logikproblem

  Alt 19. Mär 2010, 15:07
Ist schwer zu beschreiben *g*
Ich arbeite mich mal weiter in SQL ein. Ich sollte die Joins lernen *g*
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#6

Re: Kleines Logikproblem

  Alt 19. Mär 2010, 15:16
dann mal mal die Struktur der Tabellen der Datenbank auf und mach Pfeile, welche Einträge wie verknüpft sind. Daraus kann man dann die Joins machen. Mit solch einer Struktur wird es wesentlich einfacher.

Wenn du das selbst machen willst, schau dir mal Access an und erstelle neben den Tabellen eine Abfrage wie du deine Daten haben willst. Dann kannst du in die SQL-Ansicht umschalten und hast deinen SQL-Befehl.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Kleines Logikproblem

  Alt 19. Mär 2010, 18:54
Hallo Sanguis
wenn ich Dich richtig verstanden habe, dann ist das vollkommen richtig was Du bekommst
[delphi]
Tab1:
Worker1;ID=1
Worker2;ID=2

Tab2
Amerika;ID=1
Afrika;ID=2

Tab3
30;T2ID=2;T1ID=1
40;T2ID=2;T1ID=2
77;T2ID=2;T1ID=1


Wenn Deine Daten ungefähr so aussehen, dann sind die Ergebnisse der Query auch korrekt:

Worker1 Afrika 30
Worker1 Afrika 77
...

wahrscheinlich mußt Du deine Daten über mehrere Queries (eine für jeden Worker) (oder eine mit Parametern!) erfragen.
Z.B.:
SQL-Code:
select Tab1.*, Tab2.*, Tab3.*
from Tab1, Tab2, Tab3
where Tab1.ID = Tab3.T1ID
  and Tab2.ID = Tab3.T2ID
  and Tab2.Kontinent ='Afrika
oder
  and Tab1.Worker = 'Worker1'
ich hoffe das hilft Dir
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Kleines Logikproblem

  Alt 19. Mär 2010, 19:05
Bitte nicht diese Schreibweise angewöhnen, das gibt nur Probleme. Lieber mit JOIN arbeiten:
SQL-Code:
select *
from Tab1 join
     Tab2 on Tab1.ID = Tab3.T1ID join
     Tab3 on Tab2.ID = Tab3.T2ID
where Tab2.Kontinent ='Afrika'
-- bzw. Tab1.Worker = 'Worker1'
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Sanguis

Registriert seit: 20. Jul 2005
Ort: Essen
146 Beiträge
 
#9

Re: Kleines Logikproblem

  Alt 19. Mär 2010, 23:04
Hallo,

ich danke Euch.
Ich hab das Problem mit mehreren Querys gelöst. Aber ich versuche mich grad an Euren Lösungen, ist schlanker

Gruß,
Andreas
  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 03:37 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