vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit ausnahmen 
Autor: Steven McMegabyte
Datum: 17.05.06 15:24

Hallo limpbiz,

das war ne echt harte Nuß.
Aber ich glaube nun, das ich eine Lösung habe, die zwar noch ein wenig
verbessert werden muss aber immerhin schon das richtige Ergebnis liefert.

Die Tabellenstruktur sieht bei mir so aus (gekürzt):

tblRezepte tblRezeptzutaten tblZutatStamm
--------------- ----------------------- ----------------------
Rezeptnr-----------(1:n)----------> Rezeptnr ZutatName
Rezeptname ZutatIndex<--------(n:1)-----------ZutatIndex
AnzZutaten

Jetzt kommen drei Abfragen, die aufeinander aufbauen.
Später muss man versuchen, diese als Unterabfragen zu verschachteln.
Hab ich noch nicht gemacht.



Erste (=unterste Abfrage) - Name in Access = abfEins
In der HAVING-Klausel stehen beispielhafte Zutaten
SELECT tblRezeptzutaten.Rezeptnr, tblZutatStamm.ZutatName
FROM tblZutatStamm LEFT JOIN tblRezeptzutaten ON tblZutatStamm.Zutatindex = tblRezeptzutaten.ZutatIndex
GROUP BY tblRezeptzutaten.Rezeptnr, tblZutatStamm.ZutatName
HAVING (((tblZutatStamm.ZutatName)="Milch" Or (tblZutatStamm.ZutatName)="Hefe" Or (tblZutatStamm.ZutatName)="Mehl" Or (tblZutatStamm.ZutatName)="Salz"));

Erklärung: die erste Abfrage ermittelt auf Basis der Tatsache "was habe ich noch
für Zutaten im Kühlschrank?" alle in Frage kommenden Rezeptnummern.
Dabei kommen die Rezeptnummer mehrfach vor.

Zweite Abfrage (basiert auf abfEins) - Name in Access = abfZwei
SELECT abfEins.Rezeptnr, Count(abfEins.Rezeptnr) AS Anzahl
FROM abfEins
GROUP BY abfEins.Rezeptnr;

Erklärung: die zweite Abfrage erzeugt auf Basis der ersten Abfrage ein Ergebnis,
wo jede Rezeptnr nur einmal vorkommt und in einer zus. Spalte drinsteht,
wie oft diese Rezeptnr vorgekommen ist.

Dritte Abfrage (basiert auf abfZwei) - Name in Access = abfDrei
SELECT tblRezepte.Rezeptname
FROM abfZwei INNER JOIN tblRezepte ON abfZwei.Rezeptnr = tblRezepte.Rezeptnr
WHERE (((tblRezepte.AnzZutaten)=[abfZwei].[Anzahl]));

Erklärung: die letzte Abfrage vergleicht nun die ermittelte Anzahl aus abfZwei und gibt nur die Rezepte heraus, wo die Anzahl der Zutaten vollständig ist.

Mit freundlichen Grüßen

Steven McMegabyte
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit ausnahm...1.184limpbiz16.05.06 20:12
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...647ModeratorFZelle17.05.06 08:36
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...694limpbiz17.05.06 08:41
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...647Steven McMegabyte17.05.06 08:48
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...701Steven McMegabyte17.05.06 09:12
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...664spike2417.05.06 09:35
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...697limpbiz17.05.06 11:31
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...728Steven McMegabyte17.05.06 15:24
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...639Steven McMegabyte17.05.06 15:29
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...694limpbiz17.05.06 15:50
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...688limpbiz19.05.06 08:28
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...614Steven McMegabyte19.05.06 08:56
Re: SQL Abfrage denkanstoss / Abfrage aus 2 Tabellen mit aus...678limpbiz19.05.06 09:06

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel