Inhalt aus 2 SQL-Tabellen abfragen und sortieren

salonhuber

Grünschnabel
Hallo, ich habe folgendes Problem:
ich habe 2 Tabellen (tabelle1, tabelle2), mit fogenden Spalten:

Tabelle 1:
title
kalenderende

Tabelle 2:
titel
enddatum

Die Werte in den Spalten "enddatum" und "kalenderende" sind vom Format "yyyy-mm-dd".
Nun möchte ich die Werte aus beiden Tabellen holen und nach Datum sortiert ausgeben, nur komme ich nicht darauf. Kann mir jemand helfen?

Im Übrigen muss ich ein dickes Lob an dieses Forum aussprechen, bisher habe ich hier für jedes meiner Problem eine Lösung über die Suche gefunden. (nur diesmal nicht)
 
Warum nicht so?

SQL:
SELECT a.kalenderende, b.enddatum FROM tabelle1 AS a, tabelle2 as b ORDER BY a.kalenderende, b.enddatum ASC;
 
Danke erstmal für die schnelle Antwort...

So ähnlich habe ich es bereits versucht, habe jetzt nochmal deine Lösung probiert und festgestellt, dass mein Problem wahrscheinlich bei der Ausgabe liegt.

Normalerweise würde das ja in etwa so funktionieren:

PHP:
$daten_abrufen = mysql_query("SELECT...");

while($daten = mysql_fetch_array($daten_abrufen)
  {
   echo 'Datum: '.$daten['datum'].' - Beschreibung: '.$daten['titel'].' <br />';
  }
Allerdings haben die Spalten in den Tabellen unterschiedliche Namen ("kalenderende" und "enddatum", bzw. "titel" und "title").

Angenommen die Werte in "kalenderende" sind 1, 2, 8 und die in enddatum 3, 10, 20, dann soll die Ausgabe am Ende so aussehen: 1, 2, 3, 8, 10, 20 und das schaffe ich nicht.
 
Du hast doch geschrieben, dass die Spalten DATE-Felder sind, wie kann dann der Inhalt 1,2,8 oder 3,10,20 sein?
 
Wie es per MySql geht, weis ich nicht (Geht bestimmt). Aber per PHP kannst du es so machen
PHP:
$sql = "SELECT a.kalenderende, b.enddatum FROM tabelle1 AS a, tabelle2 AS b";
$result = mysql_query($sql) or die(mysql_error);

$daten = array();
while($row = mysql_fetch_assoc($result))
{
   if(isset($row['kalenderende']))
   {
       $daten[] = $row['kalenderende'];
   }
   if(isset($row['enddatum']))
   {
       $daten[] = $row['enddatum'];
   }
}
sort($daten);

foreach($daten as $datum)
{
    echo $datum."<br>";
}
 
Ein reine SQL-Lösung ist immer besser, als das Problem auf die Host-Sprache abzuwälzen. Verwende UNION:

SQL:
(SELECT a.kalenderende FROM tabelle1 AS a
UNION
SELECT b .enddatum FROM tabelle2 AS b)
ORDER BY 1;

Die beiden mit UNION verknüpften Queries müssen die selbe Anzahl von Spalten enthalten, welche ihrerseits den selben Datentyp haben müssen. Der Name kann ruhig unterschiedlich sein.
 
Zurück