AGB  ·  Datenschutz  ·  Impressum  







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

Sortierung bei SQL

Ein Thema von Hansa · begonnen am 2. Dez 2002 · letzter Beitrag vom 4. Dez 2002
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

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

Sortierung bei SQL

  Alt 2. Dez 2002, 09:39
Hi,

habe hier ein Problem, das bestimmt noch öfter auftaucht. Nehmen wir mal das Drucken einer Rechnung. Hierzu laufe ich über alle IDs, die zu einer Rechnung mit einer bestimmten Nr. gehören. Die zugehörigen Artikel suche ich mir dann über die ID_ARTNR der Rechnungs-Positionen. Auf der Rechnung sollen aber die einzelnen Artikel nicht kreuz und quer in der Reihenfolge ihrer Eingabe drauf stehen, sondern nach der Art.Nr. sortiert. Ein ORDER BY ID_ARTNR nützt aber nichts, da die IDs der Artikel selber mit Sicherheit nicht parallel zu den eigentlichen Art.Nr. laufen. Dazu fällt mir nur ein, eine eigene Tabelle (oder vielleicht einen View, damit habe ich mich allerdings noch nicht beschäftigt) für diesen Zweck zu erstellen. Aber das kommt mir doch recht kompliziert vor. Geht das auchh einfacher ?

Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2
  Alt 2. Dez 2002, 10:22
Hallo Hansa,

du kannst ja direkt nach artikelnummer sortieren:

Code:
SELECT ... ORDER BY artikelnummer
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Sortierung bei SQL

  Alt 2. Dez 2002, 10:29
Hai Hansa,

eventuell reicht dir ja ein JOIN in der Abfrage:

Code:
SELECT rechnung_pos.artikel_id , artikel.art_nummer FROM rechnung_pos
INNER JOIN art_nummer ON rechnung_pos.artikel_id = artikel.artikel_id
ORDER BY art_nummer.artikel
rechnung_pos ist die Tabelle mit den Positionen einer Rechnung
artikel ist die Tabelle mit den Artikeldaten

Ich kann das ganze jetzt leider nicht testen. Aber das sollte in Ansatz sein.

Über eine View kannst Du das natürlich auch machen (das oben ist quasie ja eine).

Gruss
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4
  Alt 2. Dez 2002, 10:43
Hi,

Zitat von MrSpock:
du kannst ja direkt nach artikelnummer sortieren:
Meinst Du ungefähr so :

SELECT art.nr, art.bez,recpos.ID,recpos.preis FROM artikel,recpos ORDER BY art.nr;

Ob das wohl so geht ?? Dann hätte ich die Art.Nr., die Art.Bez. aus der Art-Table und den Preis aus der Recpos-Table. Aber wo steht dann, daß es genau der Artikel ist, der auf der Rechnungspos. steht ? Ich muß doch über die ID_ART der Recpos suchen

@Sharky : obiges wäre einfacher, wenn es denn geht. Das mit den INNER / OUTER joins muß ich mir nochmal in Lemmy`s Tutorial (Hi Lemmy ) durchlesen. Das klingt aber auch vielversprechend. Wahrscheinlich brauche ich zumindest keine Table / View anzulegen.

Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5
  Alt 2. Dez 2002, 11:08
Hallo Hansa,

genau um das sicher zu stellen brauchst du den INNER JOIN, den Sharky gezeigt hat, der lässt sich aber auch etwas "einfacher" schreiben:

Code:
SELECT r.artikel_id , a.art_nummer, ... FROM rechnung_pos r, artikel a
WHERE r.artikel_id = a.artikel_id
ORDER BY a.art_nummer
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6
  Alt 2. Dez 2002, 11:45
Hi,

ich nehme an, dann bräuchte ich 2 Datasets und das wars. Aber kann ich das SelectSQL direkt da reinschreiben, oder soll ich Delphi die normalen SQLs machen lassen und das was ich brauche über Query oder so ?

Halt ! Ich hab noch was vergessen : und zwar ist mir nicht ganz klar wie und wo ich die SELECTS setze. Im Moment sieht es so aus :
Code:
  WITH RecDataMod.RecKopfDS DO BEGIN
    Active := false;
    SelectSQL.Text := 'SELECT RECHNNR,UMSATZMWST2 FROM RECKOPF8 WHERE RECHNNR = Edit1.Text;
    Active := true;
  END;
  WITH RecDataMod.KuDataSet DO BEGIN
    Active := false;
    SelectSQL.Text := 'SELECT NR,ANREDE,NAME,STRASSE,ORT,TELEFON FROM KUNDE8 WHERE NR= :NR';
    Active := true;
  END;
Das ist allerdings jetzt nur : Eingabe einer Rechn.Nr.-> zugehörigen Kunden suchen (da gibts nichts zu sortieren). Wobei das NR= :NR so nicht stimmt. Muß mir das mit der Parameterübergabe auch noch mal angucken. Aber ist jetzt egal. Muß bei MrSpocks Statement nur dafür gesorgt werden, daß die entsprechenden Datasets wie bei mir active=false, dann SelectSQL dann active=true gesetzt werden und dann habe ich genau das, was ich brauche ? Mist, muß wieder weg, nie kann mann etwas in Ruhe zu Ende bringen. Wenn dem aber tatsächlich so ist, muß ich BB zitieren : Das ist ja einfach !

Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#7
  Alt 2. Dez 2002, 12:14
Hallo Hansa,

also für die Abfrage selbst brauchst nur eine TQuery Komponente, deren SQL Eigenschaft du das o.g. SQL Statement zuweist. Die Eigenschaft DatabaseName muss noch gesetzt werden und nach einem Open setzt die BDE das SQL Statement um und liefert dir EINE Datenmenge zurück. Du solltest aber im WHERE Teil noch eine bestimmte Rechnung auswählen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8
  Alt 2. Dez 2002, 12:32
Hi MrSpock,

vielen Dank für Deine Hilfe. Muß weg.......... Wenn man einmal von seiner Absicht keinen Text zu editieren abweicht Muß mir das nachher nochmal ansehen, aber lies trotzdem mal das letzte Posting von mir wieder neu. Ich glaube so geht es auch. Ich wundere mich schon seit längerem, daß ich überall Query,Query usw. höre und ich in ca. 20 allerdings kleineren Programmen keine einzige gebraucht habe.

Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9
  Alt 2. Dez 2002, 13:41
Hai Hansa,

mal nur so am Rande:

Je nach dem was für Rechnung erfasst werden würde ich diese nicht nach der Artikelnummer sortieren.
Es kann ja sein das bei der Erfassung bestimmte Artikel nacheinander eingegeben wurden weil diese zusammen gehören.
Darum würde ich die Reihenfolge bei der Erfassung festlegen und nicht beim ausdruck.

Gruss
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10
  Alt 2. Dez 2002, 17:00
Hi Sharky,

nee nee, die Art.Nummern müssen auf der Rechnung nachvollziehbar sein. Hast du eine Preisliste des Lieferanten und willst DEINE EIGENEN Preise nachschauen, also als Kunde, weißt Du selber dann noch in welcher Reihenfolge Du das bestellt hast ?

Bei Dir ist es vielleicht Art.Nr. 100 und beim Lieferanten 86454423434. Wer will denn diese Nr. suchen. Ich würde den Software-Hersteller anrufen und fragen, ob er noch ganz fix ist.

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 16:31 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