queries over 2 databases
Puur uit nieuwsgierigheid vraag ik me af of het mogelijk is om queries uit te voeren over meer dan 1 database. Dus zou je bijv. een JOIN query kunnen uitvoeren op 2 tabellen die zich in een verschillende database bevinden? Waarschijnlijk niet... maar ben toch benieuwd of iemand dit kan bevestigen (of ontkennen).
Om je nieuwsgierigheid te bevredigen, ja dat kan:
Ik zie ook dat jij USING gebruikt. Wat is het verschil met WHERE...
Je moet met dezelfde user op beide databases toegang hebben vanuit dezelfde database sessie. Je maakt dus niet twee losse database connecties aan.
Dat begrijp ik niet. In je connectie moet je toch expliciet aangeven met welke database je connect?
Met mysql_select_db selecteer je welke database je standaard gebruikt (dat kan ook via de query USE 'databasenaam';
Dat zorgt er voor dat je in die database sessie niet altijd databasenaam.tabelnaam hoeft te gebruiken.
Als je geen standaard database selecteert moet je die bij je query's meegeven.
Als je gebruiker toegang heeft tot meerdere databases kun je de andere databases ook gebruiken.
Je krijgt dan
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
USE hoofddatabase; //Dit doe je vaak al met mysql_select_db o.i.d.
SELECT
tabela.kolom1,
anderedatabase.tabelb.kolom2
FROM
tabela
LEFT JOIN anderedatabase.tabelb ON
tabela.id = anderedatabase.tabelb.id
SELECT
tabela.kolom1,
anderedatabase.tabelb.kolom2
FROM
tabela
LEFT JOIN anderedatabase.tabelb ON
tabela.id = anderedatabase.tabelb.id
Als je geen tabel selecteert is het:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
hoofddatabase.tabela.kolom1,
anderedatabase.tabelb.kolom2
FROM
hoofddatabase.tabela
LEFT JOIN anderedatabase.tabelb ON
hoofddatabase.tabela.id = anderedatabase.tabelb.id
hoofddatabase.tabela.kolom1,
anderedatabase.tabelb.kolom2
FROM
hoofddatabase.tabela
LEFT JOIN anderedatabase.tabelb ON
hoofddatabase.tabela.id = anderedatabase.tabelb.id
De 2e query kun je ook gebruiken als je wel de database hebt geselecteerd
Ik weet niet of ik je helemaal goed begrijp. Wat ik bedoelde is dat je bij PDO een database connectie moet maken. In deze connectie geef je aan welke database je wilt gebruiken via "dbname=foodatabase;". Dit kan ik (neem ik aan) toch niet zomaar leeg laten? Of kan dat wel???
Via een SQL client zoals HeidiSQL kun je verbinding maken met een MySQL server. Als je user toegang heeft tot meerdere databases zie je die gewoon in de lijst staan.
Oké, ik zal er binnenkort eens wat mee gaan testen. Ik had niet verwacht dat het zou kunnen, dus dat is sowieso al wel grappig. Thanks voor je hulp!
Installeer lokaal een MySQL server, verbind met een fatsoenlijke client. Maak meerdere databases aan met tabellen en probeer eens wat uit. Dat gaat sneller dan steeds een script moeten maken, uploaden en kijken wat er gebeurt.
Ik kan gewoon een database connectie maken op m'n server. Dus dat is geen probleem. Komt goed!
Ozzie PHP op 21/05/2013 09:41:24:
Hoi Ger, oké dat wist ik niet! Wat ik niet snap... hoe maak je dan verbinding met 2 databases en hoe execute je je query dan?
Ik zie ook dat jij USING gebruikt. Wat is het verschil met WHERE...
Ik zie ook dat jij USING gebruikt. Wat is het verschil met WHERE...
Is hetzelfde als:
Heel handig als je op meerdere kolommen moet joinen.
Ah oké thanks. Ik hoop dat ik het kan onthouden :)
je kunt wel uit 2 tabellen van een database iets selecteren. maar van 2 databasen lijkt me sterk, want hoe moet je dat in je verbinding "configuratie" regelen dan?
Lees de antwoorden Niek. Het kan namelijk wel degelijk, mits de mysql gebruiker rechten heeft op beide databases.