mikrocontroller.net

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


Autor: Leo B. (luigi)
Datum:

Bewertung
0 lesenswert
nicht 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):
Products:
  - id: long int, auto increment
  - name: text
  - price: float
  - currencyId: long int

Currency:
  - id: long int, auto increment
  - name: text
  - 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:
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

Autor: Klaus (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Leo B. schrieb:
> Microsoft Access Datenbank

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

Autor: SQL User (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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
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
SELECT Products.price*Currency.dollarRate as dollarPrice,Products.name  FROM Products INNER JOIN Currency ON [Products].currencyId=[Currency].id order by 1

Gruß Uwe

Autor: Jan Hansen (j_hansen)
Datum:

Bewertung
-1 lesenswert
nicht 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.

Autor: Hào Nguyễn Danh (ho_n)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.