Anzeige:
Ergebnis 1 bis 11 von 11

Thema: Problem beim Joinen zweier Tabellen

  1. #1
    Registrierter Benutzer
    Registriert seit
    10.03.2004
    Beiträge
    96

    Problem beim Joinen zweier Tabellen

    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:

    PHP-Code:
    $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 :
    Code:
    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.
    Code:
    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?

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    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.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.03.2004
    Beiträge
    96
    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.

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    array_merge(tab1_array, tab2_array);
    und dann usort (siehe PHP-Doku)

    Ist natürlich nicht so performant.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  5. #5
    Registrierter Benutzer
    Registriert seit
    10.03.2004
    Beiträge
    96
    Danke ich werde es mal so versuchen!

  6. #6
    Registrierter Benutzer
    Registriert seit
    26.12.2002
    Ort
    Matrix
    Beiträge
    194
    mit einem view sollte es gehen:

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


    -j

  7. #7
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Wenn du das Gesamtergebnis sortiert haben willst geht das so:

    Code:
    (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

  8. #8
    Registrierter Benutzer
    Registriert seit
    10.03.2004
    Beiträge
    96
    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.

  9. #9
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von MasterFX
    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...

  10. #10
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    Zitat Zitat von MasterFX
    Zudem kommt noch das Problem, dass ich später auch ausgeben will aus welcher Tabelle der titel stammt. Also z.B.
    Code:
    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?
    Code:
    (SELECT 'Tabelle 1:' Tabelle,id,datum,titel FROM tabelle1)
    UNION
    (SELECT 'Tabelle 2:' Tabelle,id,datum,titel FROM tabelle2)
    ORDER BY datum
    religion is a virus from outer space

  11. #11
    Registrierter Benutzer
    Registriert seit
    10.03.2004
    Beiträge
    96
    mysql_connect() wird auf jeden fall fehlerfrei ausgeführt, weil alle anderen SQL Befehle ja ohne Probleme gehen.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •