Abfrage aus zwei Tabellen vereinen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage aus zwei Tabellen vereinen

    Hallo Forum,

    ich komme bei einer MySQL-Abfrage nicht weiter; ich konnte den Artikel zu JOINS von mrhappiness leider nicht auf mein Problem anwenden...

    Vereinfacht:

    Es gibt zwei Tabellen: "Messetermine" und "Ausbildungstermine"

    In beiden Tabellen gibt es die "Bezeichnung", als Name des Eintrages.

    In beiden Tabellen gibt es "von" und "bis", ein Timestamp.

    Nun möchte ich folgendes:

    Ich würde gerne die 5 (zunächst) kommenden Termine haben, jedoch zusammengefasst aus beiden Tabellen, es sollen nur 5 Datensätze sein.

    die query müsste so ähnlich aussehen, wie:

    PHP-Code:
    $termine mysql_query ("SELECT * FROM messen, ausbildungen WHERE bis > ".time()."
    ORDER BY von ASC LIMIT 0,5"
    ); 
    Dies ruft jedoch eine Fehlermeldung hervor.

    Vielleicht kann jemand helfen?

    Vielen Dank und Gruß
    Fabian
    Zuletzt geändert von fab_k; 13.07.2007, 14:02.

  • #2
    Re: Abfrage aus zwei Tabellen vereinen

    Original geschrieben von fab_k
    Es gibt zwei Tabellen: "Messetermine" und "Ausbildungstermine"
    Unterscheiden sich diese beiden Arten von Terminen derart, dass eigene Tabellen gerechtfertigt sind?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Danke für die schnelle Antwort...

      Ja, es gibt in den beiden Tabellen unterschiedliche Felder. Es sind auch zwei Bereich auf der Site (+ für mich übersichtlicher).

      Kommentar


      • #4
        Original geschrieben von fab_k
        Ja, es gibt in den beiden Tabellen unterschiedliche Felder. Es sind auch zwei Bereich auf der Site (+ für mich übersichtlicher).
        Das letzteres absolut nicht relevant sein kann, sollte wohl klar sein.


        Wenn dir eine Version zur Verfügung steht, die UNION schon unterstützt - dann könntest du darüber beide Tabellen zusammenführen, sortieren und mit LIMIT arbeiten.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ja, UNION geht, habe nun folgendes probiert:

          PHP-Code:
          $conv mysql_query ("(SELECT * FROM ausbildungen WHERE bis > ".time().") UNION (SELECT *
          FROM conventions WHERE bis > "
          .time().") ORDER BY von ASC LIMIT 0,5"); 
          .. das ist es aber scheinbar noch nicht ganz

          In den Ergebnissen wird das "bis-Datum" der zweiten Tabelle als 01.01.1970 angezeigt und mit dem "vom-Datum" vertauscht... (?)

          Kommentar


          • #6
            du musst die select so aufbauen, dass die Anzahl der selektierten Spalten gleich sind, nicht einfach hirnlos select * schreiben.

            Kommentar


            • #7
              Vielen Dank, asp2php, jetzt klappt es:

              PHP-Code:
              $conv mysql_query ("(SELECT bezeichnung, von, bis, ort FROM ausbildungen WHERE bis >
              "
              .time().") UNION (SELECT bezeichnung, von, bis, ort FROM conventions WHERE bis > ".time().") 
              ORDER BY von ASC LIMIT 0,5"
              ); 
              Für alle mit ähnlichen Problemstellungen ist diese Seite grundsätzlich gut:

              http://dev.mysql.com/doc/refman/5.0/en/union.html

              Kommentar

              Lädt...
              X