Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

alphaflight83 8. Okt 2009 14:59

Datenbank: MySQL • Zugriff über: UniDAC

SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Hallo,
ich habe momentan ein Problem mit einer Union Query, die bei UNIDac einen Assertion Failure verursacht.
Wie im SQL zu sehen, werden die selben Tabellen verwendet, lediglich die WHERE Klauseln unterscheiden,
ob die Werte der Spalten Partial und Total dividiert werden oder nicht.

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
  T1.ID AS Name,
  T1.Partial AS Partial,
  T1.Total AS Total,
  T2.Unit AS Unit
FROM Tabelle1 AS T1, Tabelle2 AS T2
WHERE T1.ID = T2.ID
  AND T2.Unit = '')
ORDER BY
  Name ASC
LIMIT 10000
Wie gesagt, verursacht die Abfrage einen UniDac Fehler, im MySQL Query Browser funktioniert sie ohne Probleme.
Meiner Meinung nach wird der Fehler durch das UNION ausgelöst, alle anderen Queries verursachen keine Fehler.
Gibt es vielleicht eine andere Möglichkeit um eine Bedingung in eine Abfrage einzubauen?

Grüße, Alphaflight

Bernhard Geyer 8. Okt 2009 15:05

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Hast du die Query mit Fehlerbeschreibung schon an den Komponentenhersteller gemeldet?

Ansonsten: Wieso gibt es im zweiten Teil keine Spalten-Alias "Name"?

alphaflight83 8. Okt 2009 15:14

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Das fehlende Name war ein Copy Paste Fehler, das muss da natürlich rein.
Ich habs ins DevArt Forum gepostet, bisher aber noch keine Antwort erhalten,
werd ich später/morgen nochmal sehen müssen.

mkinzler 8. Okt 2009 15:14

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Versuche mal explizite Joins

tsteinmaurer 8. Okt 2009 15:15

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Zitat:

Gibt es vielleicht eine andere Möglichkeit um eine Bedingung in eine Abfrage einzubauen?
Ja, wenn z.B. das CASE Konstrukt unterstützt wird.

mkinzler 8. Okt 2009 15:19

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Zitat:

Ja, wenn z.B. das CASE Konstrukt unterstützt wird.
Oder IIF(), IF(), ...

Bernhard Geyer 8. Okt 2009 15:25

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Zitat:

Zitat von alphaflight83
Das fehlende Name war ein Copy Paste Fehler, das muss da natürlich rein.

Und wie schauen die Spaltenbezeichnungen im MySQL Query Browser aus? Du hast ja auch noch unterschiedliche Alias-Reihenfolge was evtl. den MySQL-Server durcheinander bringt.

alphaflight83 8. Okt 2009 15:33

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Unterschiedliche Alias-Reihenfolge? Ich verstehe nicht ...

mkinzler 8. Okt 2009 15:36

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Lass mal das as beim Tabellen-Alias weg

alphaflight83 8. Okt 2009 15:41

Re: SQL Vereinfachung einer Union Query wegen UniDac Problem
 
Grade getestet, aber das AS beim Tabellen-Alias hat keine Auswirkung.
Ich probiere grade mal die CASE/IF Sache aus ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 Uhr.
Seite 1 von 3  1 23      

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