AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi select mehrte Spalten

select mehrte Spalten

Ein Thema von jangbu · begonnen am 15. Mär 2009 · letzter Beitrag vom 15. Mär 2009
Antwort Antwort
jangbu

Registriert seit: 6. Apr 2006
167 Beiträge
 
Delphi 10.3 Rio
 
#1

select mehrte Spalten

  Alt 15. Mär 2009, 17:26
Datenbank: SQL-Server 2000 • Zugriff über: BDE
Hallo,

habe folgendes Problem (hab die DB nicht erzeugt), habe eine Tabelle(Lieferung) die u.a. aus 3 Artikelspalten (Art_1,Art_2,Art_3) besteht. Eine Lieferung kann somit aus bis zu 3 Artikeln bestehen. Wie man sieht ist DB nicht normiert. Ich muss jetzt alle Artikel suchen. Über:

select art_1, count(art_1) from Lieferung
where art_1 > 0 group by art_1 order by art_1

bekomme ich alle verwendeten Art_1 mit Anzahl heraus. Da jedoch die gleichen artikel auch noch in Art_2 bzw. Art_3 stehen könnten und ich die drei Spalten nicht in einer (für die Auswertung) zusammenführen kann (weiß zumindest nicht wie) würde ich jetzt drei selects nacheineander auf die Spalten art_1, art_2 und art_3 laufen lassen und das Ergebis jeweils eine eigene Spalte einer Hilfstabelle einfügen, in dieser Tabelle würde ich dann anschließend meine eigentliche Auswertung (min,max,aver...) durchführen.
Oder hat jemand eine elegantere Idee.

jangbu
  Mit Zitat antworten Zitat
omata

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

Re: select mehrte Spalten

  Alt 15. Mär 2009, 17:31
Vielleicht so...
SQL-Code:
SELECT art, SUM(anzahl) AS anzahl
FROM (SELECT art_1 AS art, 1 AS anzahl
      FROM lieferung
      WHERE art_1 > 0
      UNION
      SELECT art_2 AS art, 1 AS anzahl
      FROM lieferung
      WHERE art_2 > 0
      UNION
      SELECT art_3 AS art, 1 AS anzahl
      FROM lieferung
      WHERE art_3 > 0) x
GROUP BY art
ORDER BY art
Was du da allerdings wie mit MIN, MAX und AVG machen willst ist mir noch nicht ganz klar.
  Mit Zitat antworten Zitat
WoGe

Registriert seit: 16. Jun 2005
Ort: Kelkheim
178 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: select mehrte Spalten

  Alt 15. Mär 2009, 18:54
Hallo

wenn man Omata's SQL Code ein wenig umbastelt, sollte es gehen:
SQL-Code:
create view View_Artikel_Anzahl(Artikel,anzahl)
as
(SELECT art_1 AS art, 1 AS anzahl
      FROM lieferung
      WHERE art_1 > 0
      UNION
      SELECT art_2 AS art, 1 AS anzahl
      FROM lieferung
      WHERE art_2 > 0
      UNION
      SELECT art_3 AS art, 1 AS anzahl
      FROM lieferung
      WHERE art_3 > 0) x
SQL-Code:
Select count(*) from View_Artikel_Anzahl
group by Artikel
order by Artikel
Gruss
wo
  Mit Zitat antworten Zitat
omata

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

Re: select mehrte Spalten

  Alt 15. Mär 2009, 19:19
Ja, aber ohne Klammern...
SQL-Code:
CREATE VIEW view_artikel_anzahl
AS
SELECT art_1 AS art, 1 AS anzahl
FROM lieferung
WHERE art_1 > 0
UNION
SELECT art_2 AS art, 1 AS anzahl
FROM lieferung
WHERE art_2 > 0
UNION
SELECT art_3 AS art, 1 AS anzahl
FROM lieferung
WHERE art_3 > 0
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
167 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: select mehrte Spalten

  Alt 15. Mär 2009, 20:03
Danke omata, super passt alles,

Zu Deiner Frage: was ich mit min,max,.. will:

In der Tabelle gibt es zu jedem Artikel auch noch einen Preis und den will ich eigentlich mit den Aggregatfunktionen auswerten:

(select art_1,art_2,art_3,preis_1,preis_2,preis_3)

Hab die Abfrage entsprechend angepasst. Jetzt kann ich die Aggregatfunktion avg(preis) über die virtuelle spalte preis (preis_1,_2,_3) laufen lassen.

Nochmals danke, auf "UNION" und Unterabfrage wäre ich jetzt nicht gekommen.

jangbu
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:52 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