![]() |
Datenbank: Informix • Version: 7 • Zugriff über: BDE
[SQL] Wie bilde ich dieses resultset?
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! |
Re: [SQL] Wie bilde ich dieses resultset?
Poste mal die Metadaten der Tabelle(n).
|
Re: [SQL] Wie bilde ich dieses resultset?
Auf Oracle das müsste eigentlich so funktionieren:
SQL-Code:
In wie weit die Syntax mit Informix passt, kann ich allerdings nicht sagen. Aber ich denke, das sollte auch gehen.
SELECT id FROM motoren WHERE (rel, ccm) in (SELECT rel, max(ccm) FROM motoren group by rel)
|
Re: [SQL] Wie bilde ich dieses resultset?
Zitat:
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:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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 by Thomas Breitkreuz