![]() |
Datenbank: SQL Sever • Version: 2000 • Zugriff über: ADO
SQL Abfrage mit Distinct - Unterdrücken doppelter Datensätze
Hallo, ich habe folgendes Problem mit einer SQL Abfrage.
Ich habe 2 Tabellen mit folgendem Aufbau 1. Tabelle Lager I_Nummer (Primärschlüssel) Warengruppe Bezeichnung 2. Tabelle Bilder NR (Primärschlüssel) LagerNr Name Nun erstelle ich eine Abfrage wie folgt.
SQL-Code:
Es werden von der Lager-Tabelle nur jeweils ein Datensatz ausgegeben, was ich auch möchte.
SELECT DISTINCT LAGER.I_Nummer, LAGER.Warengruppe
FROM LAGER INNER JOIN Bilder ON LAGER.I_Nummer = Bilder.LagerNr ORDER BY LAGER.Warengruppe Sobald ich aber auch das Feld 'NR' der Bilder-Tabelle mit angebe bekomme ich auch immer die doppelten Datensätze angezeigt.
SQL-Code:
Wie kann ich das verhindern, so dass nur ein Datensatz von der Lagertabelle ausgegeben wird?
SELECT DISTINCT LAGER.I_Nummer, LAGER.Warengruppe, Bilder.LagerNr, Bilder.NR
FROM LAGER INNER JOIN Bilder ON LAGER.I_Nummer = Bilder.LagerNr ORDER BY LAGER.Warengruppe |
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
Versuch mal ein :
SQL-Code:
SELECT DISTINCT LAGER.I_Nummer, LAGER.Warengruppe, Bilder.LagerNr, Bilder.NR
FROM LAGER INNER JOIN Bilder ON LAGER.I_Nummer = Bilder.LagerNr ORDER BY LAGER.Warengruppe GROUP my Lager.I_Nummer |
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
Das funktioniert aber nicht.
Da bekomme ich folgenden Fehler vom SQL Server zurück. Zitat:
|
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
Die Reihenfolge von Group By und Order By ist vertauscht.
Grüße Mikhal [Edit] Rechtschreibfehler...[/edit] |
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
Guten Morgen.
Zitat:
SQL-Code:
SELECT LAGER.I_Nummer, LAGER.Warengruppe
FROM LAGER ORDER BY LAGER.Warengruppe Zitat:
Was hast du vor? Offensichtlich hast du kein, ein oder mehrere Bilder zu jeder LagerNr. Wenn du nur ein Bild von vielen möglichen auswählen willst, dann musst du vor dem Join die Bilder-Tabelle filtern. Grüße vom marabu |
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
Sehr gut erklärt.
Ich möchte jedem Eintrag in der Lagertabelle den ersten Eintrag in der Bildtabelle zuordnen. Es gibt in der Bildtabelle entweder keines,eines oder viele Bilder, die zu einem Eintrag in der Lagertabelle gehören. Kannst Du mir bitte helfen den SQL Befehl zusammenzubauen und das mit dem Filter erklären? Danke. |
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
Gerne. Du hast eine master-detail relationship zwischen Lager M und Bilder D. Da wir keine mächtigeren Sprachmittel für die Formulierung eines theta joins zur Verfügung haben, arbeiten wir mit einer "view" um die gewünschte (0,1) Komplexität der Beziehung für den folgenden equi join herzustellen:
SQL-Code:
Alles klar?
SELECT M.I_Nummer, M.Warengruppe, D.NR
FROM LAGER M INNER JOIN ( SELECT LagerNr, MIN(NR) AS NR FROM Bilder GROUP BY LagerNr ) AS D ON M.I_Nummer = D.LagerNr ORDER BY M.Warengruppe Für die Namensgebung in Datenbanken gibt es best practices. Tabellen tragen in der Regel den entity name im Plural. Aber dein Datenbank-Design ist bestimmt noch nicht fertig - oder? marabu |
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
:thumb: Hey wahnsinn ! Super !!!!
Hab jetzt noch folgendes Problem. Ich muss noch ergänzen ob die Lagereinträge bestimmte Werte haben, die ich vorher bestimme. Also in etwa so: z.B.
SQL-Code:
Wo und wie baue ich das noch mit ein?
WHERE M.Warengruppe IN (10,20,30)
(Ich bin noch kein SQL-Weltmeister) :roll: Dann bin ich fertig mit meinem SQL Befehl. Danke. |
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
SQL-Code:
Fertig...
SELECT M.I_Nummer, M.Warengruppe, D.NR
FROM LAGER M INNER JOIN ( SELECT LagerNr, MIN(NR) AS NR FROM Bilder GROUP BY LagerNr ) AS D ON M.I_Nummer = D.LagerNr WHERE M.Warengruppe IN (:wg) ORDER BY M.Warengruppe |
Re: SQL Abfrage mit Distinct - Unterdrücken doppelter Datens
:hello: Das nenn ich schnelle und kompetente Hilfe.
Danke nochmals. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 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