phpbar.de logo

Mailinglisten-Archive

Select-Query aus mehreren Datenbanken =?iso-8859-1?Q?durchf=FChren?=

Select-Query aus mehreren Datenbanken durchführen

Sabine Richter mysql-de_(at)_lists.bttr.org
Wed, 19 Jun 2002 10:15:12 +0200


Also, ich habs mal ausprobiert. Michael hat natürlich recht, jedenfalls
fast. Du hast Tab1 + Tab2 in Deiner Query gar nicht verknüpft. Darum
bekommst Du ein Kreuzprodukt.
Bei  mir wird 
- zuerst jeder DS auzs Tab1 mit dem 1 korrekten DS aus Tab2 kombiniert
-> 3 DS
- dann jeder DS aus Tab2 mit dem 1 korrekten DS aus Tab1 kombiniert, bis
auf die bereits in der   1. Runde ausgegebene Kombi aus korrekten Daten
aus Tab1 + korrekten Daten aus Tab2 --> 2DS

Insofern entspricht das Ergebnis Deiner Frage, auch wenn es nicht das
ist, was Du erwartest!

Ein left join würde Dir 
alle DS aus Tab1
kombiniert mit null
oder mit übereinstimmenden DS aus Tab2 bringen:

SELECT * FROM mails left join messages
on mails.pagetext = messages.pagetext
where mails.pagetext LIKE '%MySQLFehler%';

In Deinem Fall wäre das nur:
1, 'Daniel', 'testmessage', 'Eine Testmessage mit dem Suchbegriff:
MySQLFehler', None, None, None, None

In einem anderen Backend könntest Du einfach schreiben:

SELECT * FROM test1.mails 
WHERE test1.mails.pagetext LIKE '%MySQLFehler%' 
union
SELECT * FROM test2.messages 
WHERE  test2.messages.pagetext LIKE '%MySQLFehler%';

Aber bei MySQL fällt mir da leider auch nix ein. 

Liebe Grüße
Sabine



 

Daniel Hauser wrote:
> 
> > Igitt, klingt ja unschoen. Schick mal Daten! Und hast Du denn probiert,
> > ob das Erwartete rauskommt, wenn Du die Tabellen einzeln abfragst?
> > Sabine
> 
> Wenn ich die Abfrage für jede Tabelle einzeln durchführe, funktioniert es
> problemlos. Vielleicht sollte ich noch erwähnen, daß meine gesamte
> Testumgebung ein Windows2000-Rechner mit MySQL 3.23.47 ist. Nachdem ich es
> über die mysql-Shell versucht habe und dort dieselben Ergebnisse als über
> phpMyAdmin zu bekommen sind, habe ich auch diese Fehlerquelle
> ausgeschlossen. Da dieser Fehler bei mir leider reproduzierbar ist (die
> erste erwähnte Tabelle wird nie berücksichtigt, die zweite als Ausgleich *g*
> fehlerhaft), habe ich es mit folgenden Testdaten probiert - mit einem
> ähnlichen Resultat. Die Tabelle 'mails' war in Datenbank 1 vorhanden,
> Tabelle 'messages' in DB 2.
> 
> SELECT * FROM test1.mails, test2.messages WHERE test1.mails.pagetext LIKE
> '%MySQLFehler%' OR test2.messages.pagetext LIKE '%MySQLFehler%';
> 
> CREATE TABLE mails (
>   postid int(10) unsigned NOT NULL auto_increment,
>   username varchar(50) NOT NULL default '',
>   title varchar(100) NOT NULL default '',
>   pagetext mediumtext,
>   PRIMARY KEY  (postid)
> );
> INSERT INTO mails (postid, username, title, pagetext) VALUES ('', 'Daniel',
> 'testmessage', 'Eine Testmessage mit dem Suchbegriff: MySQLFehler');
> INSERT INTO mails (postid, username, title, pagetext) VALUES ('', 'Bill
> Gates', 'dummyeintrag', 'dummyeintrag aus datenbank 1');
> INSERT INTO mails (postid, username, title, pagetext) VALUES ('', 'Linus
> Thorvalds', 'dummyeintrag', 'noch ein dummyeintrag aus datenbank 1');
> 
> CREATE TABLE messages (
>   postid int(10) unsigned NOT NULL auto_increment,
>   username varchar(50) NOT NULL default '',
>   title varchar(100) NOT NULL default '',
>   pagetext mediumtext,
>   PRIMARY KEY  (postid)
> );
> INSERT INTO messages (postid, username, title, pagetext) VALUES (1,
> 'Daniel', 'testmessage', 'Hier haben wir eine Testmessage mit dem
> Suchbegriff MySQLFehler');
> INSERT INTO messages (postid, username, title, pagetext) VALUES (2, 'Bill
> Gates', 'dummyeintrag', 'dummyeintrag aus der zweiten datenbank');
> INSERT INTO messages (postid, username, title, pagetext) VALUES (3, 'Linus
> Thorvalds', 'dummyeintrag', 'dummyeintrag aus db nr 2');
> 
> Liebe Grüße,
> Daniel
> 
> p.s.: Ein kleiner Gedanke meinerseits: Es mag Zufall sein, die korrekten
> Datensätze aus Tabelle 2 werden jedoch in diesem Fall 3mal wiedergegeben.
> Bei meinem letzten Test waren nur 2 Datensätze in der Tabelle. Da könnte
> auch ein Zusammenhang bestehen.
> 
> ---
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive