midivirus
Goto Top

SQL Unterabfragen Wert aus darüberliegender - ausführender Abfrage verwenden - höchsten Wert ermitteln

Sehr geehrte Gemeinde,

besteht die Möglichkeit, ich gehe mal davon aus nur weiß ich es nicht, dass Ergebniswerte aus der ausführenden SQL-Abfrage an die Unterabfrage gelangen?

Tabelle 1:
beinhaltet alle im System vorhandene Artikel.

Tabelle 2:
beinhaltet alle im System getätigten Bestellungen.

In beiden Tabellen ist eine ID für einen Join hinterlegt.

Mittels Join bekomme ich quasi alle Bestellungen mit den Artikeldaten aufgelistet,
auch ältere ... weil alle!

Ich möchte aber nur die letzte oder neuste Bestellung haben für jeden Artikel haben

beide SQL Abfragen:
Kundenummer, Bezeichnung, Bestell_ID, ... etc.

Bestell_ID, Datum, Menge, etc.


Quellen:
http://de.wikibooks.org/wiki/Einf%C3%BChrung_in_SQL:_Unterabfragen
http://www.info-wsf.de/index.php/Unterabfragen

brachte mich jetzt noch nicht weiter.
<code="php">
select DISTINCT kundenummer, kdbezeichnung
from artikeldaten
where
kunde like '%Musterkunde%' and
order by kundenummer desc

<code="php">
Hier beispielhaft die beiden Abfragen:
select
bestelldatum
from bestellungen
where (bestell_ID = '123')
and geliefert is not null
LIMIT 1

Es müsste also beim Ausführen der Abfrage die Bestell_ID an die Unterabfrage gegeben werden, so dass dort nach dieser selektiert werden kann.

Ist sowas möglich?

Ansonsten gebt mir Stichworte für google!
sql unterabfragen wert von ebene höher verwenden
sql unterabfragen wert übernehmen
und andere Wörter brachten mich noch nicht ans Ziel!

Content-ID: 150624

Url: https://administrator.de/contentid/150624

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

93097
93097 08.09.2010 um 19:32:16 Uhr
Goto Top
Hallo midivirus,

suche mal mit "Korrelierter Unterabfrage".
Für weitere Informationen zu Deinen Abfragen wäre es gut, wenn wir die Tabellenschemata kennen würden.
BTW scheint mir das Tabellendesign etwas suspekt: was machen Kundendaten in der Artikeltabelle? Wie gehst du vor, wenn Du Artikelstammdaten erfassen willst von einem Artikel, der keinem Kunden zugeordnet ist? Oder wenn ein Artikel zu löschen ist, der von nur einem Kunden bestellt wurde?

Viele Grüße

scit.10
Midivirus
Midivirus 08.09.2010 um 19:36:51 Uhr
Goto Top
Das ist nur ein Schema,

im eigentlichen werden wird ein join über 8 Tabellen gezogen.
Daher gilt es halt nur als Beispiel ... !

Den Begriff hab ich auch schonmal beim stöbern gefunden, kann da aktuell noch nichts mit anfangen.

Bis morgen!
Berrnd
Berrnd 08.09.2010 um 19:41:15 Uhr
Goto Top
Hi,

ohne dein verwendetes Datenbanksystem zu kennen - hier mal eine Beispiel Abfrage für MSSQL, ob das genauso auf anderen Datenbanken auch funktioniert, kann ich nicht sagen:
Ich denke dein Problem sollte mit einem GROUP BY lösen sein:
SELECT A.Artikel, BST.Bestellnummer, MAX(BST.Datum)
FROM dbo.Artikel A
JOIN dbo.Bestellungen BST
	ON A.Artikel = BST.Artikel
GROUP BY A.Artikel, BST.Bestellnummer

Gruß
Bernd
93097
93097 08.09.2010 um 20:13:21 Uhr
Goto Top
Hallo Midivirus,

ok, der Begriff "Schema" wird in verschiedenen DB-Systemen unterschiedlich verwendet. Ich meinte hier mit Schemata die Beschreibungen der einzelnen Tabellen, d.h. welche (hier relevanten) Felder sie enthalten und was sie bedeuten (falls sich das nicht schon aus dem Namen ergibt)
Eine korrelierte Unterabfrage ist genau das, was du suchst: eine Unterabfrage, die Werte der äußeren Abfrage auswertet.

Viele Grüße,
scit.10
Midivirus
Midivirus 09.09.2010 um 15:49:03 Uhr
Goto Top
die MAX Funktion war genau korrekt.

Wenn ich mich jetzt auf Excel umdenke, macht es sogar total den Sinn, die zu nehmen. Verlorener Schmalz,
entschuldigt!

PostGres SQL ist die Datenbank!


Grüße
Euer Midi