Mailinglisten-Archive |
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