You are not logged in.

  • Login

1

Tuesday, January 23rd 2007, 11:06am

SQL Problem...

moin moin....

ich hab folgendes problem:

ich möchte den inhalt von 2 DB auslesen, die teilweise ähnlich feldernamen haben (datentyp auch gleich)......

konkret, ich hab eine DB mit aktuellen terminen (timestamp) und eine DB mit archivierten terminen, ebenfalls mit einem timestamp - und nun will ich eine ausgabe machen, die alle termine, in sortierter timestamp reihenfolge ausgibt.

da in der archiv DB auch termine sein können, die einen "frischeren" timestamp als termine in der aktuellen termine DB haben, kann ich nicht einfach 2 verschieden abfragen in folge machen..... °°

hat einer ne idee?

was ist mit UNION ALL ? dachte das könnte ich nutzen, aber bekomm da kein ergebnis! :-(
Ordnung ist das halbe Leben...ich leb in der anderen Hälfte :evil:

-=)GWC(RaMsEs

Unregistered

2

Tuesday, January 23rd 2007, 11:20am

"da in der archiv DB auch termine sein können, die einen "frischeren" timestamp als termine in der aktuellen termine DB haben, kann ich nicht einfach 2 verschieden abfragen in folge machen..... °°"

das kapier ich nicht. du könntest dir ja das erste mal den jüngsten eintrag i nder archiv db holen und mit dem als argument reingehen.

oder aber sowas

select * from
{
Select ort,datum from table1
union
Select ort,datum from table2
}
order by datum

This post has been edited 1 times, last edit by "-=)GWC(RaMsEs" (Jan 23rd 2007, 11:21am)


Imp_Vmax_

Professional

Posts: 766

Occupation: GER

  • Send private message

3

Tuesday, January 23rd 2007, 11:21am

z.B. sowas:

SELECT a.termin FROM (SELECT termin FROM tabelle1 UNION SELECT termin FROM tabelle2) AS a ORDER BY a.termin

This post has been edited 1 times, last edit by "Imp_Vmax_" (Jan 23rd 2007, 11:22am)


4

Tuesday, January 23rd 2007, 11:35am

ups ihr seid ja flott....

also

ich hab eine DB, nennen wir sie DB1, mit folgenden benötigten feldern...

id, time, status

und DB2, in der, neben anderen, auch die felder

id, time, status

vorhanden sind!

ich will jetzt eine liste ausgeben, die alle einträge beider DBs in zeitlicher reihenfolge anzeigt!

und eure vorschläge klappen nicht, oder ich mach da irgendwo nen dummen fehler.......

Imp_Vmax_

Professional

Posts: 766

Occupation: GER

  • Send private message

5

Tuesday, January 23rd 2007, 11:41am

du redest immer von DBs.....
Meinst du Tables oder hast du wirklich zwei DBs mit je einem Table?

Falls es zwei Tabellen in einer DB sind:
SELECT a.* FROM (SELECT id,time,status FROM tabelle1 UNION SELECT id,time,status FROM tabelle2) AS a ORDER BY a.time

Ansonsten:
SELECT a.* FROM (SELECT id,time,status FROM DB1.tabelle UNION SELECT id,time,status FROM DB2.tabelle) AS a ORDER BY a.time


Mit MYSQL funzt das so...

6

Tuesday, January 23rd 2007, 11:42am

mein natürlich 2 tables in einer DB.....

°°



hmmmm....

also ich hab eure vorschläge mal benutzt, aber bekomm da immer nur ne fehlermeldung....

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id,time,status FROM DB1 UNION SELE

This post has been edited 2 times, last edit by "CULT_Bastrup" (Jan 23rd 2007, 11:47am)


-=)GWC(RaMsEs

Unregistered

7

Tuesday, January 23rd 2007, 4:48pm

SELECT a.* FROM (SELECT id,time,status FROM tabelle1 UNION SELECT id,time,status FROM tabelle2) AS a ORDER BY a.time

von vmax finde ich gut, aber du must natürlich auch das tabelle1 und tabelle2 umbennen^^

oder noch expliziter:

SELECT a.* FROM
(

SELECT tabelle1 .id,tabelle1.time,tabelle1.status FROM tabelle1

UNION

SELECT tabelle2.id,tabelle2.time,tabelle2.status FROM tabelle2

)
a ORDER BY a.time

hm aber die klammerung ist da glaub noch falsch bein as a, mal kurz kucken.

Edit: probiers mal so wie ich geschrieben hab.

This post has been edited 1 times, last edit by "-=)GWC(RaMsEs" (Jan 23rd 2007, 4:58pm)


DoC_IanPooley

Professional

Posts: 735

Location: Baden Württemberg

Occupation: GER

  • Send private message

8

Tuesday, January 23rd 2007, 5:48pm

Quoted

Original von CULT_Bastrup
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id,time,status FROM DB1 UNION SELE


probier mal nen ; (strichpunkt) hinter den codezeilen, falls du das nicht hast. glaub bei fehlendem ; bringt er auch den syntax fehler

9

Tuesday, January 23rd 2007, 7:18pm

geht auch ohne bei mysql

10

Tuesday, January 23rd 2007, 11:20pm

hmmm......

danke bis hier, aber ich komm da nciht auf nen grünen zweig.....

immer diese fehlermeldung, obwohl ich es 100% so übernommen hab und natürlich auch die table (tabelle1 und 2) richtig umbenannt!


:-(

echt scheisse!

11

Tuesday, January 23rd 2007, 11:38pm

kannst du das statement mal posten?

12

Tuesday, January 23rd 2007, 11:51pm

Quoted

SELECT a.* FROM
(
SELECT tabelle1.id, tabelle1.time, tabelle1.status FROM tabelle1
UNION
SELECT tabelle2.id, tabelle2.time, tabelle2.status FROM tabelle2
)
AS a ORDER BY a.time;


Kopier das noch einmal eins zu eins und änder die unterstrichenen Wörter entsprechend. Ich hab extra zwei Tabellen angelegt und es getestet... das muss so funktionieren.

This post has been edited 1 times, last edit by "patrik" (Jan 23rd 2007, 11:52pm)


13

Tuesday, January 23rd 2007, 11:56pm

Quoted

Original von CULT_Bastrup
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id,time,status FROM DB1 UNION SELE


Heißt deine erste Tabelle wirklich DB1?

EDIT: Hab noch mal was getestet, müsste eigentlich richtig sein, ansonsten kommt eine andere Fehlermeldung. Wenn eine Spalte nicht existiert bzw. du eine Spalte falsch geschrieben hättest, käme auch eine andere Fehlermeldung.

Es muss sich also wirlich um einen Syntax Fehler handeln. Wie gesagt, probier noch mal das Statement oben und wenn das nicht geht -> poste mal das was du eingegeben hast!

This post has been edited 3 times, last edit by "patrik" (Jan 24th 2007, 12:00am)


14

Wednesday, January 24th 2007, 8:28am

also vielen dank an euch jungs....

union ist auf jeden fall der richtige befehl, aber die syntax war etwas anders.......



klappt aber jetzt auch mit drei tablen! ;-)