Forum: PC-Programmierung Microsoft Access ODBC-Abfrage "JOIN, arithmetische Operation und sortieren" Problem


von Leo B. (luigi)


Lesenswert?

Hallo zusammen,

ich habe eine Frage, zu SQL abfragen. Ich habe ein Anliegen, welches ein 
bisschen fortgeschrittener ist als ich es bin. Aber ich lerne noch.

Folgende Umgebung:
Ich programmieren in Python und greife mittels pyodbc auf eine Microsoft 
Access Datenbank zu. In der Datenbank habe ich 2 Tabellen (Products und 
Currency):
1
Products:
2
  - id: long int, auto increment
3
  - name: text
4
  - price: float
5
  - currencyId: long int
6
7
Currency:
8
  - id: long int, auto increment
9
  - name: text
10
  - dollarRate: float

Jetzt möchte ich meine Produkte nach Preis sortieren, aber eben Äpfel 
mit Birnen verglichen, sondern umgerechnet in Dollar.
Ich müsste also price * dollarRate[currencyId] berechnen.

Meine Abfrage sieht momentan so aus:
1
SELECT price FROM Products INNER JOIN Currency ON [Products].currencyId=[Currency].id;
Nur leider kann ich so nicht nach dem dollar-preis sortieren.
Meine Google suche hat mir auch nur den Vorschlag gebracht, erst die 
Tabelle mittels UPDATE zu aktualisieren, also dort die Multiplikation 
vorzunehmen und danach nach dem Ergebnis zu sortieren. Aber ich habe 
hier ja keine echte Tabelle sondern ein JOIN Konstrukt.

Kann mir da einer von den Spezialisten einen schnellen Rat geben?
Irgendwie glaube und hoffe ich, das es nur eine ganz einfache Zeile ist, 
aber ich finde es nicht raus wie es geht.

Danke schonmal
Viele Grüße
Leo

von Klaus (Gast)


Lesenswert?

Leo B. schrieb:
> Microsoft Access Datenbank

Schmeiß die weg und benutz was zeitgemäßes.

von SQL User (Gast)


Lesenswert?

Leo B. schrieb:
> Meine Abfrage sieht momentan so aus:SELECT price FROM Products INNER
> JOIN Currency ON [Products].currencyId=[Currency].id;
> Nur leider kann ich so nicht nach dem dollar-preis sortieren.

sollte so gehen
1
SELECT Products.price*Currency.dollarRate as dollarPrice FROM Products INNER JOIN Currency ON [Products].currencyId=[Currency].id order by 1

Damit hast Du die Preise sortiert, aber kein Produkt dazu. Also musst Du 
noch den Namen oder die Produkt ID ergänzen, so etwa
1
SELECT Products.price*Currency.dollarRate as dollarPrice,Products.name  FROM Products INNER JOIN Currency ON [Products].currencyId=[Currency].id order by 1

Gruß Uwe

von Jan H. (j_hansen)


Lesenswert?

Man kann echt viel in SQL machen, muss man aber nicht. Wenn du eh über 
Python auf die DB zugreifst, dann sortiere die Daten eben dort.

von Hào N. (ho_n)


Lesenswert?

Jan H. schrieb:
> Man kann echt viel in SQL machen, muss man aber nicht. Wenn du eh über
> Python auf die DB zugreifst, dann sortiere die Daten eben dort.

Good!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.