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!
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!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 150624
Url: https://administrator.de/contentid/150624
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
5 Kommentare
Neuester Kommentar
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
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
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:
Gruß
Bernd
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
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
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