MYSQL 5: Datenbankabfrage UNION
maniak
- datenbank
1 Ilja
Hallo an alle!
Meine Datenbankkenntnisse sind etwas eingerostet, weshalb ich mich ein wenig schwer tue. Vielleicht kann mir ja jemand von euch helfen!
Ich habe folgende Datenbanken:
app
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| app | varchar(3) | NO | PRI | NULL | |
| fak | int(3) | NO | | NULL | |
+--------------+--------------+------+-----+---------+-------+
buchungen
+---------+--------------+------+-----+----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+----------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| owner | varchar(255) | NO | | - | |
| app | varchar(3) | NO | | NULL | |
| titel | varchar(15) | NO | | NULL | |
| dauer | varchar(4) | NO | | NULL | |
| anfang | date | NO | | NULL | |
| ende | date | NO | | NULL | |
+---------+--------------+------+-----+----------+----------------+
und möchte daraus folgendes Resultat:
+-----+---------+
| app | percent |
+-----+---------+
| A | NULL |
| B | NULL |
| C | NULL |
| D | NULL |
| E | 20 |
| F | NULL |
| G | NULL |
| H | 50 |
| I | NULL |
| J | NULL |
| K | NULL |
| L | NULL |
| M | NULL |
| N | NULL |
+-----+---------+
Folgende Query habe ich dazu generiert:
SELECT DISTINCT * from ((Select
app,
ROUND(SUM(DATEDIFF(ende,anfang))/DATEDIFF('2009-12-31','2009-12-01')*100) as percent
FROM buchungen
WHERE
ende <= '2009-12-31' AND anfang >= '2009-12-01'
AND deleted = 0
GROUP BY app)
UNION
(SELECT DISTINCT app,NULL from apps )) as t group by app
Diese Query funktioniert, erscheint mir jedoch recht "durchs Auge ins Knie" Programmiert. Im Wesentlichen geht es mir hier um die Zusammenfassung der Werte percent, wobei ich trotzdem die app Values haben möchte, in denen keine Belegung (ende/anfang) existiert. Diese Lösung ist eher ein Workaround...
Für Verbesserungsvorschläge wäre ich euch dankbar!!
Viele Grüße
Dennis
moin,
Ich habe folgende Datenbanken:
das sah mir mehr nach zwei tabellen aus und weniger um datenbanken....
Diese Query funktioniert, erscheint mir jedoch recht "durchs Auge ins Knie" Programmiert.
sieht auf den ersten blick auch so aus, kannst du noch mal in worte fassen, was genau du abfragen willst. beispieldaten wären auch hilfreich
Ilja