AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [SQL] Wie bilde ich dieses resultset?
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Wie bilde ich dieses resultset?

Ein Thema von RuX · begonnen am 5. Mai 2006 · letzter Beitrag vom 5. Mai 2006
Antwort Antwort
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#1

[SQL] Wie bilde ich dieses resultset?

  Alt 5. Mai 2006, 11:19
Datenbank: Informix • Version: 7 • Zugriff über: BDE
Ich brauche ein bestimmtes resultset, weiß aber nicht wie ich es bilden kann.

folgende vereinfachung: es gibt eine master tabelle sagen wir die verschiedene autos enthält, und eine detail tabelle die motoren definiert, die für ein auto verfügbar sind (1:n; 1 auto hat n verfügbare motoren). die detail tabelle definiert außerdem noch wie viel hubraum der motor besitzt.
spalten der detail tabelle: id (primary von motoren), rel (referenz auf auto) und ccm (hubraum); alles integer.
was ich jetzt brauche ist eine liste aller motoren (und zwar NUR die ids!), die jeweils am stärksten für ihr auto sind.

pro auto ist das ganze recht einfach:
SELECT id FROM motoren WHERE ccm = (SELECT max(ccm) FROM motoren WHERE rel = 123) AND rel = 123

hoffe ich konnte es verständlich erklären!
Delphi3/Delphi5/Delphi7/Delphi8 User
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: [SQL] Wie bilde ich dieses resultset?

  Alt 5. Mai 2006, 11:24
Poste mal die Metadaten der Tabelle(n).
Markus Kinzler
  Mit Zitat antworten Zitat
Safti

Registriert seit: 30. Mär 2005
Ort: Freiburg im Breisgau
46 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: [SQL] Wie bilde ich dieses resultset?

  Alt 5. Mai 2006, 11:36
Auf Oracle das müsste eigentlich so funktionieren:
SELECT id FROM motoren WHERE (rel, ccm) in (SELECT rel, max(ccm) FROM motoren group by rel) In wie weit die Syntax mit Informix passt, kann ich allerdings nicht sagen. Aber ich denke, das sollte auch gehen.
  Mit Zitat antworten Zitat
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#4

Re: [SQL] Wie bilde ich dieses resultset?

  Alt 5. Mai 2006, 11:41
Zitat von mkinzler:
Poste mal die Metadaten der Tabelle(n).
ok z. b.
autos ist eigentlich irrelevant:

id
1
2
3
4
5
6
7
...

motoren:

id | rel | ccm
1 | 1 | 10
2 | 1 | 15
3 | 1 | 5
4 | 2 | 15
5 | 2 | 5
6 | 3 | 10
7 | 2 | 5
8 | 5 | 20
9 | 5 | 15
10 | 6 | 10

das ergebnis sollte dann sein
2 (die id vom höchsten ccm für rel 1)
4 (die id vom höchsten ccm für rel 2)
6 etc...
8 "
10 "

Zitat von Safti:
Auf Oracle das müsste eigentlich so funktionieren:
SELECT id FROM motoren WHERE (rel, ccm) in (SELECT rel, max(ccm) FROM motoren group by rel) In wie weit die Syntax mit Informix passt, kann ich allerdings nicht sagen. Aber ich denke, das sollte auch gehen.
funktioniert leider bei informix nicht, dort müssen sub-selects immer eine spalte zurückgeben und ich kann auch keine begriffe für INs zusammenfassen
Delphi3/Delphi5/Delphi7/Delphi8 User
  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:32 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