Markus: mySQL: zwei Tabellen, gleiche Strucktur

Hallo,

ich habe zwei Tabellen, nennen wir sie a und b. Sie haben EXAKT den selben Aufbau. Im Prinzip möchte ich nun alle Datensätze aus beiden Tabellen in einem Ergebnisarray vereinen. Die Abfrage wäre ebenfalls für beide Tabellen identisch.

"SELECT * FROM a WHERE date>='$date' ORDER BY date, title"

Nun meine Frage. Ist es möglich mein Vorhaben in einer Abfrage zu vereinen? (id ist ein auto_increment Feld und die Werte könnten in a und b demnach doppelt vorkommen).

Wie kann ich andernfalls zwei Ergebnisarrays zu einem vereinen, dass ich es danach wie ein mySQL-Result behandeln kann?

mfg

Markus

  1. Hallo Markus,

    ich habe zwei Tabellen, nennen wir sie a und b. Sie haben EXAKT den selben Aufbau. Im Prinzip möchte ich nun alle Datensätze aus beiden Tabellen in einem Ergebnisarray vereinen.

    bist Du Dir sicher, dass Deine Tabellenstruktur optimal ist?

    UNION (mindestens MySQL 4.0.0 erforderlich) sollte Dir weiterhelfen.

    Freundliche Grüße

    Vinzenz

    PS: Mit PHP hat Deine Frage nichts zu tun :-)

    1. PS: Mit PHP hat Deine Frage nichts zu tun :-)

      Ich hatte nach SQL und mySQL geschaut, diese aber leider nicht gefunden. Wer ahnt schon, dass es Datenbanken auch gibt :-D

      Also ich habe den SQL String jetzt mal so gefasst:

      (SELECT * FROM a WHERE date>='20060419') UNION (SELECT * FROM b WHERE date>='20060419') ORDER BY date, title

      Nur wie es der Teufel so will gehts natürlich nicht. Nun frag ich mich aber warum.

      mfg

      Markus

      1. Hallo Markus,

        (SELECT * FROM a WHERE date>='20060419') UNION (SELECT * FROM b WHERE date>='20060419') ORDER BY date, title

        Es ist meistens keine gute Idee, SELECT * zu verwenden. Schreibe doch die Spalten hübsch der Reihe nach hin. Das ist _einmal_ etwas Arbeit.

        Nur wie es der Teufel so will gehts natürlich nicht. Nun frag ich mich aber warum.

        Welche MySQL-Version verwendest Du?
        Wie sehen die Tabellen aus?

        Ein kurzer Test mit Tabellen gleicher Struktur lieferte mir mit MySQL 4.1.16 das von Dir angestrebte Resultat.

        Freundliche Grüße

        Vinzenz

        1. Welche MySQL-Version verwendest Du?

          5.0.15

          Wie sehen die Tabellen aus?

          CREATE TABLE b (
            id int(11) NOT NULL auto_increment,
            group\_id int(11) default NULL,
            ext\_for\_id int(11) default NULL,
            title varchar(255) NOT NULL default '',
            description text NOT NULL,
            contact text NOT NULL,
            url varchar(100) NOT NULL default '',
            email varchar(120) NOT NULL default '',
            picture varchar(100) NOT NULL default '',
            cat tinyint(2) NOT NULL default '0',
            date int(11) NOT NULL default '0',
            time int(11) default NULL,
            modif\_date int(11) default NULL,
            modif\_time int(11) default NULL,
            duration int(11) NOT NULL default '0',
            priority tinyint(4) default '2',
            day tinyint(2) NOT NULL default '0',
            month smallint(2) NOT NULL default '0',
            year smallint(4) NOT NULL default '0',
            approved tinyint(1) NOT NULL default '0',
            submit\_by mediumint(8) unsigned NOT NULL default '0',
            type char(1) NOT NULL default 'E',
            access char(1) default 'P',
            price varchar(50) default NULL,
            location varchar(100) default NULL,
            city varchar(50) default NULL,
            band varchar(100) default NULL,
            fotografen int(1) default NULL,
            partyleinwand int(1) default NULL,
            freikarten varchar(15) default NULL,
            beginn varchar(10) default '',
            landkreis int(3) NOT NULL default '20',
            ausweiskontrolle int(1) default NULL,
            partyleinwand\_da int(1) default NULL,
            fotodruck\_da int(1) default NULL,
            needfotografen int(2) NOT NULL default '0',
            fotografencount int(2) NOT NULL default '0',
            forumlink varchar(255) NOT NULL default '',
            PRIMARY KEY  (id)
          ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

          1. Hat sich erledigt. Was eine Eigeneheit meines CMS.

  2. echo $begrüßung;

    Wie kann ich andernfalls zwei Ergebnisarrays zu einem vereinen, dass ich es danach wie ein mySQL-Result behandeln kann?

    UNION ist ein anderes Wort für Vereinigung. Mit SELECT ... UNION SELECT ... lassen sich zwei Ergebnismengen verbinden.

    echo "$verabschiedung $name";