Benutzer-Werkzeuge

Webseiten-Werkzeuge


computer:tutorials:sql:bestellung-loesung

Gerät mit folgenden Eckdaten suchen:

  • nicht ausgeliehenes Gerät
  • 2 GHz oder mehr CPU-Takt
  • RAM größer oder gleich 2 GB
mysql> SELECT * FROM geraete WHERE G_Ausgeliehen = 0 AND G_CPU > 2000 AND G_RAM >= 2048;
+------+----------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+
| G_Nr | G_Bezeichnung  | G_Kaufdatum | G_Seriennummer | G_CPU | G_RAM | G_HDD | G_TFT | G_Preis | G_Ausgeliehen |
+------+----------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+
|    2 | Thinkpad X200  | 2008-08-01  | FK12ZKM1       |  2260 |  2048 |   160 |    12 |      15 |             0 |
|    3 | Thinkpad T61p  | 2008-08-01  | NT18MSW8       |  2600 |  4096 |   200 |  15.4 |      20 |             0 |
|    4 | Thinkpad R500  | 2009-09-01  | WT64XBC4       |  2800 |  4096 |   320 |  15.4 |      23 |             0 |
|    5 | Thinkpad T430s | 2012-11-01  | NM78GFJ7       |  2400 |  8192 |   500 |    14 |      29 |             0 |
+------+----------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+

SQL-Befehl abändern, damit auch der Wochenpreis (5 Werktage) angezeigt wird - Herr Mustermann nennt ein Limit von 100 EUR:

mysql> SELECT *, (G_Preis*5) AS "Preis pro Woche" FROM geraete WHERE G_Ausgeliehen = 0 AND G_CPU > 2000 AND G_RAM >= 2048;
+------+----------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+-----------------+
| G_Nr | G_Bezeichnung  | G_Kaufdatum | G_Seriennummer | G_CPU | G_RAM | G_HDD | G_TFT | G_Preis | G_Ausgeliehen | Preis pro Woche |
+------+----------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+-----------------+
|    2 | Thinkpad X200  | 2008-08-01  | FK12ZKM1       |  2260 |  2048 |   160 |    12 |      15 |             0 |              75 |
|    3 | Thinkpad T61p  | 2008-08-01  | NT18MSW8       |  2600 |  4096 |   200 |  15.4 |      20 |             0 |             100 |
|    4 | Thinkpad R500  | 2009-09-01  | WT64XBC4       |  2800 |  4096 |   320 |  15.4 |      23 |             0 |             115 |
|    5 | Thinkpad T430s | 2012-11-01  | NM78GFJ7       |  2400 |  8192 |   500 |    14 |      29 |             0 |             145 |
+------+----------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+-----------------+

SQL-Befehl entsprechend abändern, sodass nach der CPU absteigend sortiert wird - nur das erste Ergebnis soll angezeigt werden:

mysql> SELECT *, (G_Preis*5) AS "PreisWoche" FROM geraete WHERE G_Ausgeliehen = 0 AND G_CPU > 2000 AND G_RAM >= 2048 AND (G_Preis*5) <= 100 ORDER BY G_CPU DESC LIMIT 0,1;
+------+---------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+------------+
| G_Nr | G_Bezeichnung | G_Kaufdatum | G_Seriennummer | G_CPU | G_RAM | G_HDD | G_TFT | G_Preis | G_Ausgeliehen | PreisWoche |
+------+---------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+------------+
|    3 | Thinkpad T61p | 2008-08-01  | NT18MSW8       |  2600 |  4096 |   200 |  15.4 |      20 |             0 |        100 |
+------+---------------+-------------+----------------+-------+-------+-------+-------+---------+---------------+------------+

Gerät ausleihen:

UPDATE geraete SET G_Ausgeliehen = 1 WHERE G_Nr=3;

Rechnung erstellen:

INSERT INTO rechnungen (R_Datum, R_Kunde, R_Bezahlt) VALUES ("2013-01-16", 1, 0);
INSERT INTO rechnung_pos (R_Nr, G_Nr, Stck, Einzelpreis) VALUES (1, 3, 5, 20);

Rechnung wurde bezahlt, Zahlung vermerken:

UPDATE rechnungen SET R_Bezahlt = 1 WHERE R_Nr=1;
computer/tutorials/sql/bestellung-loesung.txt · Zuletzt geändert: 2013/05/13 22:04 von christian