Deadlock
Little Overclocker
|
Also Tabelle1 und Tabelle2 haben verschiedene Spalten, aber beide haben ein Datum drin.
Ich würde gerne beide verbinden und nach Datum sortieren, so das eine sortierte Tabelle herauskommt.
Aber das wäre dann eine Gesamttabelle wo die Datensätze verschieden sind, also wird das wohl nicht möglich sein?!
Die Ausgabe muss natürlich für Datensätze aus Tabelle1 bzw. Tabelle2 auch verschieden sein.
irgendwelche lösungsvorschläge?
Bearbeitet von Deadlock am 16.04.2003, 22:54
|
Guest
Deleted User
|
tabellen mit gleichen spalten per UNION verbinden und dann das ganze sortieren
beispiel
(select oid as id, produktname as name, date as datum from tabelle1 UNION select myID as id, info as name, datumsfeld as datum from tabelle2) order by datum
gleiche felder, alles sortiert nach datum. funkt zumindest unter MSSQL so, ich nehme an auch unter mySQL
|
Deadlock
Little Overclocker
|
thnx!
das müsste klappen ich brauche nur eine neuere Version von mysql, denn UNION gibts erst ab 4.0 ...
|
watchout
Legendundead
|
lol, machs doch "einfach" mit where, musst halt bissi mehr schreiben... sortieren geht sowieso
blöde frage... is das datum eh unique?? sonst dürfts nämlich ärger geben...
|
Deadlock
Little Overclocker
|
"einfach" mit where? ein einfaches Beispiel bitte Also das Datum ist eigentlich nicht unique aber das kann ich noch ändern. Aber es könnte natürlich zufällig in beiden Tables das gleiche Datum sein, wieso ist das ein Problem. UNION kann ich leider nicht benutzen weil ich bei meinem webspace a ältere mysql version hab Hab folgendes gefunden checks aber nicht so richtig: http://www.nstep.net/~mpbailey/prog...rials.union.php
|
watchout
Legendundead
|
sry... befürchte ich hab da was falsch verstanden, sry - aber dein anwendungsfall is auch etwas kryptisch... wenn ich das _jetzt_ richtig verstanden hab willst du zwei komplett unterschiedliche tabellen zusammen nach deren datumsfeld sortieren??
|
Deadlock
Little Overclocker
|
hrhr ja mein Anwendungs fall scheint wirklich kryptisch zu sein du hast richtig verstanden ich will 2 unterschiedliche Tabellen zusammensetzen und nach Datum sortieren. Vielleicht so in der Art: ID Datum Quelle 1 5.10.2003 Tabelle1 usw. und dann hole ich mir über die ID und Quelle zur Ausgabe noch einmal den Komplettendatensatz. (Tab1 und Tab2 muss natürlich auch unterschiedlich ausgegeben werden)
|
kleinerChemiker
Here to stay
|
SELECT * FROM table1, table 2 WHERE table1.datum = table2.datum ORDER datum DESC
ich hoffe ich habs richtig verstanden. eventuell ist da noch ein abstand zu viel drinnen *g*
MIK
|
Deadlock
Little Overclocker
|
hast du falsch verstanden ich will tabelle1 und tabelle2 nicht irgendwie miteinander vergleichen sondern nach datum sortieren!! und nicht einzeln sondern zusammen
|
DKCH
Administrator ...
|
und warum geht select * from t1, t2 order by datum ned? da müsstest dann ja auch beide tabellen gemeinsam sortiert haben, oder?
|
Lobo
Here to stay
|
2 selects und beide ORDER BY datum ?! ... denk i amal... is zwar grampad aber wurscht *G*
|
Deadlock
Little Overclocker
|
nicht vergessen, dass die Tabellen unterschiedlich sind!
Erklärt mir am besten das oben verlinkte Workaround für UNION Befehl
|
kleinerChemiker
Here to stay
|
hast du falsch verstanden
ich will tabelle1 und tabelle2 nicht irgendwie miteinander vergleichen
sondern nach datum sortieren!! und nicht einzeln sondern zusammen  bei meinem query würden sie eh zusammengesetz werden, ähnlich wie bei join. kannst natürlich auch nen join aufs datum machen und dann nach datum sortieren. MIK
|
Guest
Deleted User
|
2 selects und beide ORDER BY datum ?! des geht net, weil net definiert ist, nach welchem datum. das mit dem union wörkaround basiert darauf, dass du alle felder, die es in einer table gibt und in der anderen nicht, mit "IFNULL(table1.feld,table2.feld)" angibst - des mit der dummytabelle find ich unnötig, im MSSQL gehts anders auch: per CROSS JOIN -> SELECT IFNULL(table1.id, table2.myID) AS id, IfNull(table1.wertX, table2.wertX) as wertfromtable1, IfNull(table1.wertY, table2.wertY) as wertfromtable2, IfNull(table1.date, table2.date) as date table1 CROSS JOIN table2 order by date (am mssql würd es sogar noch COALESCE geben, aber das gibts warscheinlich im MySQL net)
|
Lobo
Here to stay
|
des geht net, weil net definiert ist, nach welchem datum. argh... jo... immer die selben fehler...  sowas muasi immer ausprobiern, sunst wirds nie was
|