![]() |
Datenbank: SQL-Server 2000 • Zugriff über: BDE
select mehrte Spalten
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 |
Re: select mehrte Spalten
Vielleicht so...
SQL-Code:
Was du da allerdings wie mit MIN, MAX und AVG machen willst ist mir noch nicht ganz klar.
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 |
Re: select mehrte Spalten
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:
Gruss
Select count(*) from View_Artikel_Anzahl
group by Artikel order by Artikel wo |
Re: select mehrte Spalten
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 |
Re: select mehrte Spalten
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz