Microsoft Access ODBC-Abfrage "JOIN, arithmetische Operation und sortieren" Problem

OP #5189780
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
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.