AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Query 1 zu n

Ein Thema von Tau · begonnen am 22. Okt 2003 · letzter Beitrag vom 24. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#1

Query 1 zu n

  Alt 22. Okt 2003, 06:10
Hallo Leute

habe ein kleines Problem mit meiner Query Sie will nicht so wie ich es will.

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:
SELECT dbo.Demo1.*, dbo.Test1.*
FROM dbo.Demo1 RIGHT OUTER JOIN
       dbo.Test1 ON dbo.Demo1.DemID = dbo.Test1.TesDemID
habe aber leider keine Ahnung wie ich meinen Select ummodeln muss damit ich das Ergebnis erhalte.

H I L F E

besten Dank im voraus
Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Query 1 zu n

  Alt 22. Okt 2003, 11:37
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)
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Query 1 zu n

  Alt 22. Okt 2003, 12:22
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
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#4

Re: Query 1 zu n

  Alt 22. Okt 2003, 12:24
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:
          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
funktionieren
Gruß
Tim Leuschner
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Query 1 zu n

  Alt 22. Okt 2003, 12:41
Hallo Memo

klabt leider nicht so ganz.
bekomme immer einen Syntx Fehler unbekant

mfg
Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#6

Re: Query 1 zu n

  Alt 22. Okt 2003, 12:50
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.
Tim Leuschner
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Query 1 zu n

  Alt 22. Okt 2003, 12:51
Hallo Leuselator

Zitat:
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:
Das ist so nicht ganz richtig ich brauche sehr wohl einige Spalten aus Demo1
sonst würde das ganze keinen Sinn machen.

mfg
Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#8

Re: Query 1 zu n

  Alt 22. Okt 2003, 12:55
dann nimm sie halt dazu mit
SQL-Code:
          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
Das Feld der OrderBy-Klausel bestimmt, welcher Datensatz zu oberst zu stehen kommt und demzufolge zurückgegeben wird.

Du hast immer noch nicht die Datenbank genannt, mit der Du arbeitest
Tim Leuschner
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Query 1 zu n

  Alt 22. Okt 2003, 13:08
Hallo Leuselator

Sorry

Zitat:
Du hast immer noch nicht die Datenbank genannt, mit der Du arbeitest
ich arbeite mit MSDE2000

mfg
Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#10

Re: Query 1 zu n

  Alt 22. Okt 2003, 13:10
dann sollte meine letzte Variante Dein Prob lösen...
Tim Leuschner
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz