AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Union Select und ORDER BY
Thema durchsuchen
Ansicht
Themen-Optionen

Union Select und ORDER BY

Ein Thema von Hansa · begonnen am 17. Mai 2006 · letzter Beitrag vom 18. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Union Select und ORDER BY

  Alt 17. Mai 2006, 18:07
Datenbank: FB 1.5 • Zugriff über: egal
Moin,

habe eine Tabelle. Nach 3 Kriterien sollen Daten ermittelt werden. Diese sollen in eine Datenmange, allerdings sortiert. Am besten erkläre ich es nicht so abstrakt. Es geht um Lieferung/Rücknahme. Vom Prinzip her müßte es mit Union gehen, weil es sich wie gesagt um eine Tabelle handelt. Die drei Teile sollen so aussehen (sollen auch in dieser Reihenfolge erscheinen) : 1. Lieferung : sortiert nach Art.Nr. 2.,3. : Rückgabe. Der Unterschied besteht darin, um welche Art.Nr. es sich handelt. Also in 2. z.B. alle DS > 1000 und in 3. die anderen. Rückgaben sind zur Unterscheidung durch ein Flag gekennzeichnet. Nun kommt es mir so vor, als könne man zwar am Ende des Union ein Order By machen, aber nicht für die 3 Teile einzeln. Ist da ein Fehler drin, oder geht das nur so ?
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 18:18
Ja, ein globales GROUP BY für alle Teile geht nicht. Da mußt du wohl ne SP schreiben oder FB2 verwenden, da kann man PL auch in "normalen" Queries verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 18:51
Wie SP schreiben ? Was wäre denn da anders ? Und PL ? Was ist das ? FB2 sollte mittlerweile kein Hindernis mehr sein.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 18:56
Zitat von Hansa:
Wie SP schreiben ?Was wäre denn da anders ?
Die 3 Abfragen nacheinander in der SP ausführen, dann kannst du Im Programm ein ORDER BY auf das Ergebnis machen.
Zitat:
Und PL ? Was ist das ?
Procedure Language
Zitat:
FB2 sollte mittlerweile kein Hindernis mehr sein.
Markus Kinzler
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#5

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 19:56
Hallo Hansa!

Das ließe sich vermutlich mit berechneten Feldern machen.
Poste doch mal die Tabellenstruktur und ein paar Beispieldaten.
Dann versuche ich gerne mal, sowas zusammenzubasteln.

Gruß


Onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 20:26
Beispieldaten wird zu kompliziert oder ich müßte sehr einfache konstruieren. Gehe mal hiervon als gewünschtem Ergebnis aus :

Code:
Nr.     zurueck (0 : Nein, 1 : Ja)
1        0  // nur nach Nr., sofern 0
1001     0
1002     0
1001     1  // Rückgabe Nr. > 1000
1002     1 
2        1  // Rückgabe, aber jetzt erst zeigen weil Nr. < 1000
Vielleicht kam auch die Frage nicht präzise genug rüber. Die Überlegung geht dahin, es mit dem UNION zu machen, aber geht die Sortierung (also nacheinander nach den Kriterien aus Bsp.) damit ? Also : sofern zurueck = 0 nur Sortierung nach Nr. interessiert, falls zurueck = 1, dann die zwei in Frage kommenden Nr.-Kreise zusammenhängend auflisten. Siehe oben : Nr. >= 1000 zuerst und dann die mit Nr. < 1000.

@mkinzler : an SP habe ich bei der Sache hier noch gar nicht gedacht. Wie meinst Du das genau ? Bräuchte einen fetzen SQL-Beispielcode.
Gruß
Hansa
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#7

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 20:28
Hi Hansa,

wenn ich dich richtig verstehe, möchtest du nach Artikel-Nr sortieren aber die genannte Reihenfolge
der Lieferung/Rücklieferung beibehalten. Dein Problem ist jetzt, dass die Sortierung nach Artikel-Nr
über alle mit UNION verbundenen Abfragen die gewünschte Reihenfolge wieder durcheinander würfelt.
Eben alles nur nach Artikel-Nr sortiert.
Um die Datensätze nach UNIONs + Artikel-Nr sortiert zu erhalten, muß in jede Abfrage eine Konstante
eingefügt werden, welche in die ORDER By Klausel mit aufgenommen wird.

SQL-Code:
select 1 as Reihenfolge, ArtikelNr, ... from ..
union
select 2 as Reihenfolge, ArtikelNr, ... from ..
union
select 3 as Reihenfolge, ArtikelNr, ... from ..
order by Reihenfolge, ArtikelNr
alex
Alexander
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 20:31
SQL-Code:
SELECT 1 typ, nr, ...
FROM tabelle
WHERE ds > 1000
  AND flag <> 1

UNION

SELECT 2 typ, nr, ...
FROM tabelle
WHERE ds <= 1000
  AND flag <> 1

UNION

SELECT 3 typ, nr, ...
FROM tabelle
WHERE flag = 1

ORDER BY typ, nr
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 20:51
Ab FB2 kann man das auch mit Hilfe von Derived-Queries lösen:
select * from ( select * from tabelle where <bed1> union select * from tabelle where <bed2> union select * from tabelle where <bed2>) order by <feld>;
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Union Select und ORDER BY

  Alt 17. Mai 2006, 21:11
Gibts das ? Sind das etwa schon Antworten auf mein letztes Posting von kurz vorher ? Das wäre echt phänomenal, zumindest bei der Frage.

Ohne es zu testen würde ich sagen : so geht das tatsächlich. Dann noch 2 Antworten, die wohl auf Anhieb gehen.

Habe beim suchen das hier noch gefunden :

SQL-Code:
SELECT ename "Name", deptno "Abteilung" FROM emp WHERE deptno = 10
UNION
SELECT ename, deptno FROM emp WHERE deptno = 30 ORDER BY 1;
Kann mir da noch einer erklären, was das "order by 1" für einen Zweck hat ?

Wie, roter Kasten auch noch ? Wißt Ihr, daß ich somit zu einer Nachtschicht verdonnert bin ? Das da wird jetzt noch zuende gebracht.
Gruß
Hansa
  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 08:49 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