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-Key: 150624

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

Printed on: April 23, 2024 at 17:04 o'clock

Mitglied: 93097
93097 Sep 08, 2010 at 17:32:16 (UTC)
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
Member: Midivirus
Midivirus Sep 08, 2010 at 17:36:51 (UTC)
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!
Member: Berrnd
Berrnd Sep 08, 2010 at 17:41:15 (UTC)
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
Mitglied: 93097
93097 Sep 08, 2010 at 18:13:21 (UTC)
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
Member: Midivirus
Midivirus Sep 09, 2010 at 13:49:03 (UTC)
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