Frage von Teemo91, 36

SQL Hilfe Hausaufgaben?

Hallo brauche bei der SQL Hausaufgabe Hilfe. Und zwar sollen wir alle bei der Tabelle alle Teile absteigend sortiert ausgeben und dazu jeweils die anzahl. Jedoch ist bei einigen teilen die Einheit nicht stück sondern cm, die die als cm eingetragen sind sollen jeweils als 1 stück angezeigt ausgegeben werden.

Teilenr ----Anzahl-----Einheit

 121-------1----------ST

123--------30---------cm

122-------2------------ST

120-------120-----------cm

Antwort
von wotan38, 3

Du brauchst dazu doch nicht umzurechnen. Es ist egal, wieviel cm das sind, die Stückzahl ist dann immer 1.

SELECT teilenr, 1 FROM  tabelle 
WHERE einheit = 'cm'
UNION
SELECT teilenr, sum(anzahl) FROM tabelle
WHERE einheit = 'ST'
ORDER BY 1

Bitte beachten:

Die UNION-Anweisung verbindet das Ergebnis mehrerer SELECTs, deren Satzstruktur übereinstimmen muss (nur vom Typ, nicht vom Namen her).

Zum Sortieren darf man bei der Verwendung von UNION keinen Feldnamen angeben, weil dieser ja bei jedem SELECT unterschiedlich sein kann.  Stattdessen muss man die Position der Spalte angeben. Hier eine 1 für 1. Spalte.

Die UNION-Anweisung verbindet mehrere SELECTs, deren Satzstruktur übereinstimmen muss (nur vom Typ, nicht vom Namen her).

Die SORT-Anweisung bezieht sich immer auf das Gesamtergebnis und darf deshalb auch nur einmal ganz hinten angegeben werden.

Antwort
von Kiboman, 19

du musst mit IF() arbeiten

wobei brauchst du genau hilfe was hast du schon erreicht?


Kommentar von Teemo91 ,

naja ich bin mir nicht sicher wie ich von 30cm auf 1 stück umwandeln soll. Mit if() haben wir leider noch nicht gearbeitet.

Select teilnr, anzahl, einheit
from teilestruktur
group by teilnr, anzahl, einheit
order by teilnr desc

Kommentar von Kiboman ,

dann lesen die manual zu IF.

du musst dann nur prüfen als shematisches beispiel:

SELECT IF (einheit = "cm", 1, anzahl) AS stueck,...

Keine passende Antwort gefunden?

Fragen Sie die Community