"We are back" « oc.at

mySQL: versch. Tabellen sortieren u. ausgeben

Deadlock 15.04.2003 - 14:04 1403 17
Posts

Deadlock

Little Overclocker
Registered: Oct 2002
Location: Austria
Posts: 60
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
Registered: n/a
Location:
Posts: n/a
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
Registered: Oct 2002
Location: Austria
Posts: 60
thnx!

das müsste klappen ich brauche nur eine neuere Version von mysql, denn UNION gibts erst ab 4.0 ...

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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
Registered: Oct 2002
Location: Austria
Posts: 60
"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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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
Registered: Oct 2002
Location: Austria
Posts: 60
hrhr ja mein Anwendungs fall scheint wirklich kryptisch zu sein :D

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
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
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
Registered: Oct 2002
Location: Austria
Posts: 60
hast du falsch verstanden

ich will tabelle1 und tabelle2 nicht irgendwie miteinander vergleichen

sondern nach datum sortieren!! und nicht einzeln sondern zusammen :(

DKCH

Administrator
...
Registered: Aug 2002
Location: #
Posts: 3301
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
Avatar
Registered: May 2002
Location: In da Oaschicht
Posts: 2567
2 selects und beide ORDER BY datum ?!
...
denk i amal... is zwar grampad aber wurscht *G*

Deadlock

Little Overclocker
Registered: Oct 2002
Location: Austria
Posts: 60
nicht vergessen, dass die Tabellen unterschiedlich sind!

Erklärt mir am besten das oben verlinkte Workaround für UNION Befehl

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
Zitat von Deadlock
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
Registered: n/a
Location:
Posts: n/a
Zitat von Lobo
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
Avatar
Registered: May 2002
Location: In da Oaschicht
Posts: 2567
Zitat von rettich
des geht net, weil net definiert ist, nach welchem datum.

argh... jo... immer die selben fehler... :rolleyes:

sowas muasi immer ausprobiern, sunst wirds nie was :D
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz