Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Vereinfachung einer Union Query wegen UniDac Problem (https://www.delphipraxis.net/141415-sql-vereinfachung-einer-union-query-wegen-unidac-problem.html)

hoika 8. Okt 2009 16:33

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Hallo,

geht denn folgendes ?

SQL-Code:
(SELECT
  T1.ID AS Name,
  T1.Partial DIV 3600 AS Partial,
  T1.Total DIV 3600 AS Total,
  T2.Unit AS Unit
FROM Tabelle1 AS T1, Tabelle2 AS T2
WHERE T1.ID = T2.ID
  AND T2.Unit = 'hours')
UNION
(SELECT
  T3.ID AS Name,
  T3.Partial AS Partial,
  T3.Total AS Total,
  T4.Unit AS Unit
FROM Tabelle1 AS T3, Tabelle2 AS T4
WHERE T3.ID = T4.ID
  AND T4.Unit = '')
ORDER BY
  T3.ID ASC
LIMIT 10000

Heiko

shmia 8. Okt 2009 16:39

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Just for Info:
UNION ALL arbeitet schneller als UNION, weil der Server doppelte Datensätze nicht aus dem Ergebnis entfernen muss.
(bei deiner Abfrage sind doppelte Datensätze eh ausgeschlossen)

Ausserdem, hast du Beitrag #4 beachtet?
SQL-Code:
SELECT
  T1.ID AS Name,
  T1.Partial DIV 3600 AS Partial,
  T1.Total DIV 3600 AS Total,
  T2.Unit AS Unit
FROM Tabelle1 T1 INNER JOIN Tabelle2 T2 ON T1.ID = T2.ID
WHERE T2.Unit = 'hours'
UNION ALL
SELECT
  T1.ID AS Name,
  T1.Partial AS Partial,
  T1.Total AS Total,
  T2.Unit AS Unit
FROM Tabelle1 T1 INNER JOIN Tabelle2 T2 ON T1.ID = T2.ID
WHERE T2.Unit = ''
ORDER BY Name ASC
Und lass mal die Limit-Klausel weg...

omata 8. Okt 2009 21:24

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Warum so kompliziert?

SQL-Code:
SELECT t1.id AS name,
       CASE WHEN t2.unit = 'hours'
         THEN t1.partial DIV 3600 
         ELSE t1.partial
       END AS partial,
       CASE WHEN t2.unit = 'hours'
         THEN t1.total DIV 3600 
         ELSE t1.total
       END AS total,
       t2.unit AS unit
FROM tabelle1 t1
INNER JOIN tabelle2 t2
  ON t1.id = t2.id
ORDER BY name LIMIT 10000

alphaflight83 9. Okt 2009 07:59

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
tsteinmaurers bzw. Omatas Vorschlag funktioniert wunderbar.
Anscheinend hat UniDac wirklich Probleme mit UNION,
da alle anderen Vorschläge den gleichen Fehler zur Folge hatten.

Danke an alle, es ist einfach Spitze wie schnell man hier Hilfe bekommt.
:dp:

mkinzler 9. Okt 2009 08:03

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Wobei das genau die Lösung war, welche Thomas unter #5 vorgeschlagen hat

alphaflight83 9. Okt 2009 08:33

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Jo, ich hatte mir das auch schon angeschaut,
Omata hat es hier aber mustergleich präsentiert,
weswegen ich auf seinen Eintrag verwiesen habe.
(Edit: vorherigen Post editiert)

tsteinmaurer 9. Okt 2009 11:56

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Hallo Markus,

richtig, aber ich war zu faul ein lauffähiges Beispiel zu liefern. :-D

mkinzler 9. Okt 2009 12:01

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Es ist immer die Frage, wer der jenige seis sollte, der sich die Mühe macht, der Fragesteller oder der Helfende :zwinker:

omata 11. Okt 2009 19:39

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Ohne hier jetzt eine Diskussion starten zu wollen...

Es ist hier also nicht erwünscht konkrete Beispiele zu liefern, es sei denn man ist der der das Problem hat und die Frage formuliert hat?

Es ist nicht erlaubt Befehle, Ideen oder sonst etwas aus vorherigen Posts zu entnehmen, diese zu erweitern oder zu konkretisieren?

Schade, dass man diese Schlussfolgerungen aus dieser Diskussion ziehen muss, naja ich habe diese Anmerkungen zur Kenntnis genommen und werde (versuchen) mich in Zukunft dran zuhalten.

Ihr schafft es immer wieder einem jegliche Illusionen zu nehmen, das ist echt schade...

tsteinmaurer 11. Okt 2009 19:45

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Omata,

du hast meine vollständige Unterstützung, wenn du lauffähige Beispiele postest. In der Regel mach ich das auch, aber diesmal halt nur der Hinweis auf CASE, um den Originalposter auf die richige Fährte zu bringen.

Also, nur weiter so und feel free, vollständige Lösungen zu posten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz