Re: Unionabfrage bei verknüpften MySQL-Tabellen

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Hi,

"Henry Habermacher" <DontSpamHenry@xxxxxxxxxxxxxx> schrieb im Newsbeitrag
news:649f6kF29eprdU1@xxxxxxxxxxxxxxxxxxxxx
Hallo Dominik

Dominik Sauer wrote:
Vieleicht kann man das Problem umgehen.
Ich exportiere diese Daten in eine Excelsheet.
Wie bekomme ich raus wo der letzte Eintrag in meiner Excelmappe
gemacht wurde?

wieso denn ein Excel Sheet?
Leg' doch einfach eine temporäre Tabelle an und füge per Insert die Ergebnisse
der einzelnen Abfragen in diese Tabelle ein.
Am besten legst Du die temporäre Tabelle auch auf den MySQL Server, wenn er
temporäre Tabellen unterstützt. Alternativ leg' Dir lokal temporär eine MDB an
(CreateDatabase()) und leg' dann die Tabelle da hinein (SELECT .. INTO
[C:\Temp.MDB]!DeineTabelle ...)

Dann kannst Du genauso über die explizite Pfadangabe ohne einbindung der
Tabelle die Daten von dieser MDB auch wieder auslesen und nach dem beenden die
MDB wieder löschen (Kill). Das ist sicher einfacher, als da Excel zu bemühen.

Wieso der Union nicht läuft wiess ich nicht. Vielleicht unterstützt MySQL nur
einen einzelnen UNION oder das Statement wird zu komplex. Du könntest jeweils
zwei Abfragen über eine UNION verbinden und speichern und dann diese Abfragen
wiederum über eine UNION verknüpfen in der Hoffnung, dass dann diese UNION
nicht mehr an den MySQL weitergereicht wird.

Henry, du hast eingangs ja gesagt:
"Wenn die Tabellen verknüpft sind, ist Jet, nicht MySQL für den Union
verantwortlich, das heisst, das Statement muss den Jet Anforderungen genügen, es
sei denn, Du führst es als SQLDirekt aus."

So stimmt das nicht. Ein UNION wird direkt an MySQL weitergeleitet, auch ohne
dass die Abfrage PT ist, falls keine berechneten Besonderheiten eingebaut
ind - gerade mit Mysql-Proxy getestet.
Und MySQL kann selbstverständlich mehrere UNIONs in einem SQL-Statement
verarbeiten.
Tatsächlich stimmt aber, dass das Gespann JET/MySQL-ODBC ins Schleudern kommt,
wenn mehr als ein UNION enthalten ist:

Sowas funktioniert:
(SELECT 1 As a FROM tblTabelle) UNION (SELECT 2 As a FROM tblTabelle)
Access schickt dieses Statement auch für verknüpfte Tabelle direkt an MySQL.

Aber das:
(SELECT 1 As a FROM tblTabelle)
UNION
(SELECT 2 As a FROM tblTabelle)
UNION
(SELECT 3 As a FROM tblTabelle)

kommt bei MySQL so an:
((SELECT 1 As a FROM tblTabelle)
UNION
(SELECT 2 As a FROM tblTabelle))
UNION
(SELECT 3 As a FROM tblTabelle)
Die Doppelklammer am Anfang sieht MySQL als Syntaxfehler an.

Exakt der gleiche Ausdruck kommt bei MySQL übrigens an, wenn dieses Statement
abgesetzt wird:
SELECT a FROM
(SELECT 1 As a FROM tblTabelle
UNION
SELECT 2 As a FROM tblTabelle)
UNION
SELECT 3 As a FROM tblTabelle

Das heißt, dass JET die Pfoten undienlich im Spiel hat, wenn mehr als ein UNION
im Spiel ist und es formuliert den Ausdruck so um, wie es ihn selbst verstehen
würde.
Wird das Mehrfach-UNION direkt per PT an MySQL gestellt, dann gibt's kein
Problem.
Quintessenz: Wenn's geht, sollte man PT-Abfragen verwenden. Und es kann auch
nicht schaden mal einen Blick ins MySQL-Manual zu werfen und sich mit der
eigenen SQL-Dialekt vertraut zu machen. Eine View etwa wäre für Dominiks Abfrage
besser geeignet.

Ciao, Sascha






.



Relevant Pages

  • Re: Schwierige Abfrage
    ... > welche Maschine besteht EXAKT aus den Teilen A,B und C. ... > Tabelle Maschine: ... UNION ALL SELECT 'X', 'B' ...
    (microsoft.public.de.sqlserver)
  • Re: Abfrage
    ... MySQL hat einen eigenen Datentyp für Kalenderdatumswerte. ... create temporary table Tabelle (zr_von date, zr_bis date, gueltig_ab date, ... CREATE TEMPORARY TABLE A SELECT * FROM Tabelle; ...
    (de.comp.datenbanken.mysql)
  • =?ISO-8859-15?Q?Eintr=E4ge_=FCber_ein_Feld_mit_Array_?= =?ISO-8859-15?Q?Inhalt_finde
    ... Ich habe eine MySQL Tabelle mit einem Feld, ... Wie muss ich das nun als SELECT WHERE Abfrage umsetzen? ...
    (de.comp.datenbanken.mysql)
  • Re: Unionabfrage bei verknüpften MySQL-Tabellen
    ... verantwortlich, das heisst, das Statement muss den Jet Anforderungen ... Ein UNION wird direkt an MySQL weitergeleitet, ... (SELECT 1 As a FROM tblTabelle) ...
    (microsoft.public.de.access)
  • Re: union
    ... ein select mit union auch ohne Tabelle. ... SELECT 0 As ID, "Test" As Feld1 FROM Tabelle; ... "Test" As Feld1 FROM Tabelle; ...
    (microsoft.public.de.access)