Datenbanken Verbinden

JesusFreak777

Erfahrenes Mitglied
Hallo,
ich habe zwei unterschiedlichste Datenbanken (ODBC :/ ...)
in der einen werden alle gutwerte (GOOD) in der andere alle schlechtwerte (BAD) abgespeichert:
es gibt folgende spalten:
DATE, TIME, WERTX, UND_ANDERE
in meiner schlechtteile tabelle:
DATE, TIME, WERTY, UND_GANZ_ANDERE
jetzt will ich eine Abfrage machen wo ich alle werte von "GOOD" (DATE, TIME, WERTX) und alle werte von "BAD" (DATE, TIME, WERTY, UND_GANZ_ANDERE) spalten habe (die nicht vorhanden spalten in der anderen Tabelle sollen einfach leer sein) => WERTX != WERTY!!!
das hier geht:
PHP:
    $query = "
    SELECT
            DATE, TIME
        FROM
            administrator.GOOD
        WHERE
            DATE >= '".$from."'
        AND
            MATERIAL = '".$mtit."'
    UNION ALL SELECT
            DATE, TIME
        FROM
            administrator.BAD
        WHERE
            DATE>= '".$from."'
        AND
            MATERIAL = '".$mtit."'
    ";
allerdings hab ich dann nicht alle spalten die ich will, sobald ich in meinen SELECT noch ne Spalte hinzufüge, sacht er mir, das die andere die Spalte ja garnicht hat...
Ebenso ist es noch wichtig, das ich ein WHERE hinzufügen kann => es sind immerhin 7 Millionen Einträge (wovon ich 20000 brauche) und ich brauch noch eine Sortierung über aller DATE & TIME.

Vielen Dank für jeden Tipp

EDIT (ein versuch):
PHP:
    $query = "
    SELECT
            administrator.GOOD.DATE, administrator.BAD.TIME
        FROM
            administrator.GOOD
        FULL OUTER JOIN
            administrator.BAD
        ON
            administrator.GOOD.DATE=administrator.BAD.DATE => das will ich aber nicht :/

        WHERE
            administrator.GOOD.DATE>= '".$from."'
        AND
            administrator.GOOD.MATERIAL = '".$mtit."'
        AND
            administrator.BAD.DATE = '".$from."'
        AND
            administrator.BAD.MATERIAL = '".$mtit."'
    ";
Ergebnis:
ich bekomme alle einige daten, aber nicht WHERE gefiltert nicht Sortiert und so...
außerdem will ich nicht das DATE = DATE ist, da er ja nicht die selben DATUM verknüpfen soll :/
-> kann das sein, das der dann jegliche verknüfpungen macht? ich will doch die daten nur aneinander hängen!
 
Zuletzt bearbeitet:
allerdings hab ich dann nicht alle spalten die ich will, sobald ich in meinen SELECT noch ne Spalte hinzufüge, sacht er mir, das die andere die Spalte ja garnicht hat...

Das machst du schon richtig mit union all. Das macht genau das. Einfach die Daten aneinander hängen.
Bei union all muss aber die Reihenfolge der Spalten und die Datentypen beider Queries gleich sein. Deshalb kriegst du den Fehler. Was du machen kannst ist die Spalten die du in der einen Query ja gar nicht hast mit dummies ersetzen:
SQL:
select DATE, TIME, WERTX, null AS WERTY, UND_ANDERE, null AS UND_GANZ_ANDERE from good
union all
select DATE, TIME, null AS WERTX, WERTY , null AS UND_ANDERE, UND_GANZ_ANDERE from bad;
 

Neue Beiträge

Zurück