Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Select Between abfrage verfeinern (https://www.delphipraxis.net/62268-select-between-abfrage-verfeinern.html)

renekr 2. Feb 2006 07:02

Datenbank: SQL • Version: 2005 STD • Zugriff über: ADO

Select Between abfrage verfeinern
 
Hi,
Kann mir jemand mal einen Tip geben?

Ich habe eine Tabelle mit Spalte ID die Idenity ist.

Ca 3100 Datensätze drin aber ID geht von 1 -6000


Jetz will ich folgendes Selecten.

Ich habe 21 namen dazu und will das jeder name eine gleiche Anzahl von Artikeln bekommt ( für inventur )

Wie kann ich das machen?
Wenn ich Between mache das geht nicht,weil ich ja keine fortlaufende nummern habe.


Danke.

NormanNG 2. Feb 2006 07:18

Re: Select Between abfrage verfeinern
 
Hi,


man könnte eine Zwischentabelle erstellen für die Referenz ID zu Name.
Dann (zumindest mit MSSQL) gibt es das Konstrukt "select top x percent"

SQL-Code:
declare @temp table ( id int, name varchar(100) )

-- erster Name
insert into @temp ( id, name )
select top 5 percent l.id, 'name1'
from lager l
left join @temp t on l.id = t.id
where t.id is null
-- order by ?


-- zweiter Name
insert into @temp ( id, name )
select top 5 percent l.id, 'name2'
from lager l
left join @temp t on l.id = t.id
where t.id is null
-- order by ?

-- ergebnis
select * from @temp
Kann noch mit einer Tabelle der Namen o.ä. optimiert werden...

renekr 2. Feb 2006 07:46

Re: Select Between abfrage verfeinern
 
Hi,
Ja aber dann aknn i immer nur Top x % machen
aber was ist wenn ich von Artikel 200-Artike l600 das Ergebniss will.

Danke

NormanNG 2. Feb 2006 07:51

Re: Select Between abfrage verfeinern
 
Hi

Zitat:

Ja aber dann aknn i immer nur Top x % machen
aber was ist wenn ich von Artikel 200-Artike l600 das Ergebniss will.
Je nachdem,
mit dem Teil der Abfrage
SQL-Code:
left join @temp t on l.id = t.id
where t.id is null
werden ja immer nur diejenigen Datensätze (neu) ausgewählt, die bisher noch nicht in der Temp-Tabelle zugeordnet wurden. Also mit jedem neuen "Namen" werden andere "Top x" ausgewählt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 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