mySQL: zwei Tabellen, gleiche Strucktur
Markus
- php
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
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 :-)
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
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
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 ;
Hat sich erledigt. Was eine Eigeneheit meines CMS.
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";