![]() |
Query 1 zu n
Hallo Leute
habe ein kleines Problem mit meiner Query Sie will nicht so wie ich es will. :wall: In der Datenbank Demo1 sind ~1000 Daten in der Test1 sind ~3500 Daten. zwischen Demo1 und Test1 ist eine 1 zu n Beziehung und ich möcht für die Ausgabe ins DBGrid nur immer den ersten Datensatz von Test1 haben.
SQL-Code:
habe aber leider keine Ahnung wie ich meinen Select ummodeln muss damit ich das Ergebnis erhalte.
SELECT dbo.Demo1.*, dbo.Test1.*
FROM dbo.Demo1 RIGHT OUTER JOIN dbo.Test1 ON dbo.Demo1.DemID = dbo.Test1.TesDemID H I L F E besten Dank im voraus Tau |
Re: Query 1 zu n
So könntest du es mal versuchen:
SQL-Code:
SELECT dbo.Demo1.DemID, dbo.Test1.TestDemID
FROM "dbo.Demo1" dbo.Demo1, "dbo.Test1" dbo.Test1, WHERE (dbo.Demo1.DemID = dbo.Test1.TestID) |
Re: Query 1 zu n
Hallo Tau,
du musst eine Spalte auswählen aus Test1, von der du nur z.B. das Minimum nimmst. In der Group by Klausel müssen dann aber alle anderen Felder stehen. Beispiel: Du hast eine Tabelle Abteilung, in der alle Mitarbeiter mit ihren Abteilungen stehen und eine Tabelle Autos, in der alle Autos dieser Mitarbeiter stehen. Du willst aber für jeden Mitarbeiter nur das 1. Auto der Tabelle Autos:
SQL-Code:
select A.ID, MIN(A.Marke), G.abteilung FROM Autos A, abteilung G
WHERE (A.ID = G.ID) GROUP BY A.ID, G.abteilung |
Re: Query 1 zu n
Bitte gewöhnt Euch doch an die Datenbank zu nennen, mit der Ihr arbeitet.
Zum Problem: Da du nur den 1. Datensatz aus Test1 im DB-Grid anzeigen möchtest, brauchst Du den Kram aus Demo1 ja nicht und dann könnte:
SQL-Code:
funktionieren
select Top 1 B.*
from dbo.Demo1 as A right outer join dbo.Test1 as B on B.TestDemID=A.DemID order by B.FeldNameNachDemSortiertWerdenSoll Gruß |
Re: Query 1 zu n
Hallo Memo
klabt leider nicht so ganz. bekomme immer einen Syntx Fehler unbekant mfg Tau |
Re: Query 1 zu n
bei Memo ist das Komma vor dem Where überflüssig/schädlich, ausserdem bastelt er einen Crossjoin, den er anschließend in der where-Klausel einschränkt - ist je nach Datenbank extrem langsamer als der Ansatz, den Du selbst mit right outer join gewählt hast.
|
Re: Query 1 zu n
Hallo Leuselator
Zitat:
sonst würde das ganze keinen Sinn machen. mfg Tau |
Re: Query 1 zu n
dann nimm sie halt dazu mit
SQL-Code:
Das Feld der OrderBy-Klausel bestimmt, welcher Datensatz zu oberst zu stehen kommt und demzufolge zurückgegeben wird.
select Top 1
A.FeldDuBrauchstAusDemo1, A.NochSonFeld, B.* from dbo.Demo1 as A right outer join dbo.Test1 as B on B.TestDemID=A.DemID order by B.FeldNameNachDemSortiertWerdenSoll Du hast immer noch nicht die Datenbank genannt, mit der Du arbeitest :-( |
Re: Query 1 zu n
Hallo Leuselator
Sorry Zitat:
mfg Tau |
Re: Query 1 zu n
dann sollte meine letzte Variante Dein Prob lösen...
|
Re: Query 1 zu n
Hallo Leuselator
leider nicht den er gibt mir immer nur einen Daten Satz zurück. Keine Ahnung warum :wall: mfg Tau |
Re: Query 1 zu n
na wegen
SQL-Code:
Du hast in Deinem 1. Post geschrieben, dass Du nur 1 Datensatz haben möchtest - bei mir bkommt man immer was man will :-)
Top 1
|
Re: Query 1 zu n
Hallo Leuselator
Wahr vielleicht mein Fehler das ich mich so undeutlich ausgedrückt habe. Sorry. :pale: ich meinte alle Datensätze von Demo1 mit dem ersten von Test1 ( 1 zu 1 ) ohne das von Demo1 oder Test1 doppelt vorhanden sind. mfg Tau |
Re: Query 1 zu n
Also dann:
SQL-Code:
select *
from dbo.Demo1 as A left outer join ( select Top 1 * from dbo.Test1 order by FeldNameNachDemTest1SortiertWerdenSoll ) as B on B.TestDemID=A.DemID |
Re: Query 1 zu n
Hallo Leuselator
Danke für deinen Tipp :dancer2: :witch: :dancer2: Hast was gut bei mir. mfg Tau |
Re: Query 1 zu n
Hallo Leuselator
Zu früh gefreut :wall: es werden alle Daten von Demo1 angezeigt aber nur beim ersten Datensatz von Demo1 sind die Daten von Test1 dabei bei den andern fehlen die Daten ? mfg Tau |
Re: Query 1 zu n
Sorry - so kanns wirklich net gehen :oops:
ich selektiere im Subselect immer denselben Datensatz aus Test1 und der passt dann nur mit dem 1. aus Demo1 zusammen *inBodenversink* probier mal den hier:
SQL-Code:
Gruß
select *
from dbo.Demo1 as A left outer join ( select distinct * from dbo.Test1 ) as B on B.TestDemID=A.DemID |
Re: Query 1 zu n
Hallo Tau,
darf ich noch einmal meinen Lösungsvorschlag in Erinnerung rufen :mrgreen: . |
Re: Query 1 zu n
Hallo MrSpock, Leuselator
Habe mich für eine andere Lösung entschieden. Aus folgenden Grund: Was ist wen ich vielleicht noch eine weiter Tabelle einbinden muss. Dann geht der ganze Wirbel erst richtig los. Nein Danke. :mrgreen: Ich habe es mit einer zusätzlichen Spalte und mit Where gelöst und kann jetzt jeder zeit eine oder auch weitere Tabelle einfügen. Muss nur darauf achten das ich beim erstellen und Löschen das berücksichtige. Danke trozdem für eure hilfe. mfg Tau |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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-2025 by Thomas Breitkreuz