Hallo
wie kann ich in PHP eine Abfrage über zwei Datenbanken machen?
Als Beispiel:
SELECT datenbank1.tbl_a.name FROM datenbank1.tbl_a INNER JOIN datenbank2.tbl_b ON datenbank1.tbl_a.id = datenbank2.tbl_b.id
Also ganz speziell gefragt: Kann man eine Connection zu einem MSSQL Datenbankserver aufbauen, ohne die Datenbank angeben zu müssen? Und dann die SQL Abfrage auf zwei Datenbanken beziehen?
Ja, das kann man. Die MS-Doku sagt dazu (Fußnote 2 unter der Tabelle des verlinkten Abschnitts):
„All queries executed on the established connection are made to the database that is specified by the
Database
attribute. However, if the user has the appropriate permissions, data in other databases can be accessed by using a fully qualified name. For example, if the master database is set with the Database connection attribute, it is still possible to execute a Transact-SQL query that accesses the AdventureWorks.HumanResources.Employee table by using the fully qualified name.“
Das „Database
attribute“ ist der Datenbankname, der im Array für die Verbindungsdaten steht, der in sqlsrv_connect
benutzt wird. Du brauchst also für den Datenbankbenutzer die Berechtigungen auf die andere DB zuzugreifen („appropriate permissions“) und in den Queries den vollen Namen einer Tabelle inklusive des Datebanknamens („fully qualified name“), zum Beispiel Datenbankname.dbo.Tabellenname
.
Tschö, Auge
200 ist das neue 35.