PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem beim Joinen zweier Tabellen



MasterFX
30-12-2005, 16:55
Ich habe zwei Tabellen
1. Tabelle: id,datum,uhrzeit,titel
2. Tabelle: id,datum,titel

Nun möchste ich diese Tabellen zusammen nach Datum sortieren und das Ergebnis zusammen per PHP ausgeben. Damit die Beiden aber richtig sortiert werden muss ich diese Tabellen zu einer machen. Das ganze habe ich folgender Maßen versucht:



$ergebnis = mysql_query("SELECT id,datum,titel FROM tabelle1 UNION SELECT id,datum,titel FROM tabelle2 ORDER BY datum");
while($row = mysql_fetch_object($ergebnis)){
echo "<p>$row->datum<br>";
echo "$row->titel</p>";
echo "<a class=\"small\"
}

Das ganze geht aber nicht, er sagt dann immer :

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result
Er bekommt also einen anderen Datentyp als erwartet. Nur wie komme ich dann an die Daten? Das muss doch irgenwie gehen.
Zudem kommt noch das Problem, dass ich später auch ausgeben will aus welcher Tabelle der titel stammt. Also z.B.


22.03.2006
Tabelle 1: Titel 1

23.03.2006
Tabelle 1: Titel 2

24.03.2006
Tabelle 2: Titel 1

Jemand ne Ahnung wie man das hinbekommen kann?

Turbohummel
31-12-2005, 07:46
2 Selects machen, alle Ergebnisse abholen und in ein array klatschen (Workarround).

Hol mal bitte den mysql-Fehler ab, den die Abfrage produziert.
echo mysql_error();

Weil rein von der Syntax her stimmt die Abfrage.

MasterFX
31-12-2005, 11:45
Wenn ich das in 2 Selects aufteile werden die aber nicht zusammen sortiert. Bei der Sortierung sollen ja auch die daten der zweiten Tabelle mit einbezogen werden.

Turbohummel
31-12-2005, 12:03
array_merge(tab1_array, tab2_array);
und dann usort (siehe PHP-Doku)

Ist natürlich nicht so performant.

MasterFX
31-12-2005, 12:47
Danke ich werde es mal so versuchen!

Jasper
31-12-2005, 15:56
mit einem view sollte es gehen:

create view bla as select * from tab1 union select * from tab2;
select * from bla order by x;


-j

BLUESCREEN3D
31-12-2005, 18:19
Wenn du das Gesamtergebnis sortiert haben willst geht das so:


(SELECT `id`,`datum`,`titel` FROM `tabelle1`)
UNION
(SELECT `id`,`datum`,`titel` FROM `tabelle2`)
ORDER BY `datum`
Siehe http://dev.mysql.com/doc/refman/5.1/en/union.html

MasterFX
01-01-2006, 11:32
Wie gesagt, mein größtes Probem ist das auslesen der Daten in php. Das geht irgentwie nicht. var_dump($result) spuckt dabei einfach bool(false) aus.

BLUESCREEN3D
01-01-2006, 23:38
Wie gesagt, mein größtes Probem ist das auslesen der Daten in php. Das geht irgentwie nicht. var_dump($result) spuckt dabei einfach bool(false) aus.
Welche der Variablen aus deinem ersten Post soll nun $result sein?

Bist du sicher, dass vor mysql_query() auch mysql_connect() fehlerfrei ausgeführt wurde?

Außerdem hatte Turbohummel dir schon gesagt, dass du einfach mal mysql_error() anzeigen solltest...

ninguno
02-01-2006, 07:07
Zudem kommt noch das Problem, dass ich später auch ausgeben will aus welcher Tabelle der titel stammt. Also z.B.


22.03.2006
Tabelle 1: Titel 1

23.03.2006
Tabelle 1: Titel 2

24.03.2006
Tabelle 2: Titel 1

Jemand ne Ahnung wie man das hinbekommen kann?

(SELECT 'Tabelle 1:' Tabelle,id,datum,titel FROM tabelle1)
UNION
(SELECT 'Tabelle 2:' Tabelle,id,datum,titel FROM tabelle2)
ORDER BY datum

MasterFX
02-01-2006, 09:27
mysql_connect() wird auf jeden fall fehlerfrei ausgeführt, weil alle anderen SQL Befehle ja ohne Probleme gehen.